LocalJumpError:意外返回

时间:2015-06-04 09:04:29

标签: ruby lambda closures block proc

我想知道为什么我不能从这个区块返回:

[1,2].each { |e| return e } # => LocalJumpError: unexpected return

虽然这些工作:

[1,2].each { |e| Proc.new {return e} } # => [1, 2]
[1,2].each { |e| lambda {return e} } # => [1, 2]

希望有人能解释。

1 个答案:

答案 0 :(得分:2)

您可以在Ruby中使用块内的return。它将从封闭方法返回。在这种情况下,没有封闭方法,这就是为什么会出现错误,这不是因为块中的返回是非法的