有时我需要保留变量的原始值,做一些事情然后恢复它的原始值,如下所示:
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
有没有更好的选择来实现这一目标?