3
从documentation两者为Proc#lambda?
:参数处理是“僵化”意味着什么?
返回true为一个Proc对象哪个参数的处理是刚性的。这种特效通常由lambda生成。
什么是“刚性参数”处理?
从documentation两者为Proc#lambda?
:参数处理是“僵化”意味着什么?
返回true为一个Proc对象哪个参数的处理是刚性的。这种特效通常由lambda生成。
什么是“刚性参数”处理?
如果传递错误的参数数量,则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
但是也有一些lambdas和'Proc's不在参数处理和'return' Proc's之间'两点不同。在这两种情况下,lambda表现得都像方法一样,'Proc'就像块一样。这很容易记住:“lambda”和“method”都是希腊字母,“block”和“proc”韵。 –
https://en.oxforddictionaries.com/definition/method – mbigras