在Ruby 1.8(我的版本是1.8.7-72),此代码:在里面红宝石为返回拉姆达崩溃内环1.8
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版本上运行良好。
编辑:它不仅仅是一个拉姆达内的返回;以下运行正常:
foo = lambda do
return
end
foo.call
为什么不能将范围扩展到lambda?我不能简单地跳出循环,因为在我原来的场景中,for循环后面有代码,我需要跳过 – user102008 2009-07-05 07:27:20
您可以尝试使用真实的方法,而不是lambda。 – 2009-07-05 15:17:38