更改ruby块中调用的代码范围

时间:2015-11-25 21:04:31

标签: ruby scope

假设我的方法如下:

def do_something (&code)
    code.call
end

现在我想用它来设置外部范围内的变量。

do_something do
    foo = 'bar'
end
puts foo #=>undefined

这显然是因为foo是在do_something方法的范围内定义的,我如何在外部范围中填充它?

1 个答案:

答案 0 :(得分:3)

我建议你不要使用这种方法。基本上你不应该扩大内部范围。这里更好的做法是从你的区块返回一些状态。

def do_something (&code)
  code.call
end

foo = do_something do
  'bar'
end

p foo
#=> bar