假设我的方法如下:
def do_something (&code)
code.call
end
现在我想用它来设置外部范围内的变量。
do_something do
foo = 'bar'
end
puts foo #=>undefined
这显然是因为foo是在do_something方法的范围内定义的,我如何在外部范围中填充它?
答案 0 :(得分:3)
我建议你不要使用这种方法。基本上你不应该扩大内部范围。这里更好的做法是从你的区块返回一些状态。
def do_something (&code)
code.call
end
foo = do_something do
'bar'
end
p foo
#=> bar