在 Ruby 1.8(我的版本是 1.8.7-72)中,这段代码:
foo = lambda do
for j in 1..2
return
end
end
foo.call
崩溃LocalJumpError
:
test2.rb:3: unexpected return (LocalJumpError)
from test2.rb:2:in `each'
from test2.rb:2
from test2.rb:6:in `call'
from test2.rb:6
为什么这样做?但是,它似乎在我的 Ruby 1.9 版本上运行良好。
编辑:这不仅仅是 lambda 内部的返回;以下运行良好:
foo = lambda do
return
end
foo.call