有时候我需要保留变量的原始值,做东西然后恢复它的原始值类似:
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
有没有更好的替代方案来实现这一目标?