変数の元の値を保持し、何かを実行してから、次のように元の値を復元する必要がある場合があります。
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
これを達成するためのより良い代替手段はありますか?