0

変数の元の値を保持し、何かを実行してから、次のように元の値を復元する必要がある場合があります。

def method
  original_value = @variable
  @variable = true

  result = # Do stuff

  @variable = original_value
  result
end

Ruby には、より簡単に実行できる言語構造がありますか?

これを検索しようとしましたが、グーグルで検索できる用語を実際に思いつくことができませんでした。現在のバインディングを渡し、eval を使用して元の値を元のコンテキストに保持することで、独自のソリューションをコーディングすることができました。

def preserve_value(var, bind)
  eval "lksdflkjsdlkfjdslkfjsdlkfj123214343245435324 = #{var}", bind
  result = yield
  eval "#{var} = lksdflkjsdlkfjdslkfjsdlkfj123214343245435324", bind

  result
end

def method
  preserve_value :@variable, binding do
    @variable = 3
    # Do stuff
  end
end

これを達成するためのより良い代替手段はありますか?

4

0 に答える 0