为什么在调用Proc的方法中执行剩余代码之前,Ruby中的Proc返回?
def hello
a = Proc.new{ return }
a.call
puts "Hello"
end
def proc
hello
puts "Proc"
end
在这里return
将跳过puts "Hello"
,只打印puts "Proc"
但lambda
打印也puts "Hello"
。
这是什么原因呢?
您应该在此答案中看到评论 https://stackoverflow.com/a/723/4576274。
它指出
lambda 是一种匿名方法。由于它是一个方法,因此它返回一个值,调用它的方法可以随心所欲地使用它,包括忽略它并返回不同的值。
一个过程就像粘贴代码片段。它不像一种方法。所以当一个返回发生在 Probe 中,这只是调用它的方法