在 ruby 中,return 的作用是从方法中返回一个或多个值,所以如果直接从块中 return 是会报错的:
[1.2].each { |e| return e } => LocalJumpError: unexpected return
如果把块包裹在方法中就不会报错:
def a
[1.2].each { |e| return e }
end
但是从 Proc 和 lambda 中却可以使用 return:
Proc.new { return 1 }
=> #<Proc:0x007fb39408b0e8@(irb):6>
lambda { return 1 }
=> #<Proc:0x007fb39408dac8@(irb):7 (lambda)>
但 Proc 和 lambda 并不是方法啊,难道 Proc 和 lambda 中的 return 与方法中的 return 的含义是不同的么?