ruby构造用于在块执行后保留变量的原始值

时间:2015-04-23 17:49:38

标签: ruby-on-rails ruby language-construct

有时候我需要保留变量的原始值,做东西然后恢复它的原始值类似:

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

有没有更好的替代方案来实现这一目标?

0 个答案:

没有答案