更改ruby块中调用的代码的范围
假设我有一个如下所示的方法:更改ruby块中调用的代码的范围,ruby,scope,Ruby,Scope,假设我有一个如下所示的方法: def do_something (&code) code.call end 现在我想用它在外部范围内设置一个变量 do_something do foo = 'bar' end puts foo #=>undefined 这显然是因为foo是在do_something方法的范围内定义的,如何让它在外部范围内填充?我建议您不要使用这种方法。基本上,您不应该希望将内部范围扩展到外部。更好的做法是从块中返回一些状态 def do_som
def do_something (&code)
code.call
end
现在我想用它在外部范围内设置一个变量
do_something do
foo = 'bar'
end
puts foo #=>undefined
这显然是因为foo是在do_something方法的范围内定义的,如何让它在外部范围内填充?我建议您不要使用这种方法。基本上,您不应该希望将内部范围扩展到外部。更好的做法是从块中返回一些状态
def do_something (&code)
code.call
end
foo = do_something do
'bar'
end
p foo
#=> bar
我建议你不要使用这种方法。基本上,您不应该希望将内部范围扩展到外部。更好的做法是从块中返回一些状态
def do_something (&code)
code.call
end
foo = do_something do
'bar'
end
p foo
#=> bar