2016-12-30 57 views

回答

7

如果傳遞錯誤的參數數量,則Lambdas將引發ArgumentError,Proc.new不會。

實施例:

lam = ->(x){ "OK" } 
lam.lambda? # => true 
lam.call # => ArgumentError 
lam.call(1) # => OK 

proc = Proc.new { |x| "OK" } 
proc.lambda? # => false 
proc.call # => OK 
proc.call(1) # => OK 
proc.call(1,2,3,4,5,6,7,8,9) # => OK 
+5

但是也有一些lambdas和'Proc's不在參數處理和'return' Proc's之間'兩點不同。在這兩種情況下,lambda表現得都像方法一樣,'Proc'就像塊一樣。這很容易記住:「lambda」和「method」都是希臘字母,「block」和「proc」韻。 –

+2

https://en.oxforddictionaries.com/definition/method – mbigras