为什么Proc在调用Proc的方法中执行剩余代码之前会返回ruby?proc return vs lambda return
def hello
a = Proc.new{ return }
a.call
puts "Hello"
end
def proc
hello
puts "Proc"
end
这里return
将只跳过puts "Proc"
puts "Hello"
和版画但lambda
打印puts "Hello"
为好。
这是什么原因?
的代码的一部分,“什么是这个原因吗?” - 因为这些行为是不同的。这是他们之间的差异之一。 –
有时候你确实想从整个事物中返回而不仅仅是块。耸人听闻的愚蠢的例子:'def find_even; [1,2,3] .each {| elem |如果elem.even返回元素? }; end'。所以,如果是这样的话,请使用block/proc。如果你想相反,使用lambda。 –
我在代码中看不到'lambda'。 –