2016-12-30 17 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