爲什麼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'。 –