我想知道是否有一种方法可以让我在当前上下文中动态定义以前未定义的变量。例如:
foo # => NameError: undefined method or local variable ...
# Some method call which sets foo = 1 in the local context
foo # => 1
换句话说,鉴于foo
未定义,我正在寻找任何可以让我在foo
不使用变量的情况下定义局部变量的代码foo
(例如,如果我有一些其他变量bar
的值是:foo
并且我不得不依靠它来设置值) foo
。
在 Ruby 2.1 中,eval('foo = 1')
or or似乎都等价于:eval('foo = 1', binding)
binding.local_variable_set(:foo, 1)
1.times do
foo = 1
end
换句话说,它们设置foo
在一个新的本地上下文的上下文中,使得该值在该上下文之外是不可访问的。
我想做的事可能吗?
更新:这个问题并不特定于任何特定的局部变量上下文(模块/类、方法、过程、块等)。我有兴趣明确了解可以或不能完成的任何上下文。