论证处理是"僵化的"是什么意思?

mbi*_*ras 3 ruby

摘自文件Proc#lambda?:

对于参数处理严格的Proc对象,返回true.这种触发通常由lambda生成.

什么是"严格的论证"处理?

max*_*ner 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
Run Code Online (Sandbox Code Playgroud)

  • `proc`s是lambdas和`proc`s之间有两个区别,它们不是参数处理和`return`.在这两种情况下,lambdas都表现得像方法一样,`Proc`就像块一样.这很容易记住:"lambda"和"method"都是希腊语,"阻止"和"proc"押韵. (5认同)