Ruby 为什么';进程不关心参数的数量吗?

Ruby 为什么';进程不关心参数的数量吗?,ruby,proc,Ruby,Proc,不会抛出任何错误并输出nil 为什么它不检查参数?它背后的逻辑是什么?Proc不关心验证正确数量的参数,但是lambda的做 def method1(&proc) proc.call(1,2,3) end method1{ |x,y,z,a| puts a} 结果: def method1(&proc) proc.call(1,2,3) end method1 { |x,y,z,a| puts a} method1 lambda { |x,y,z,a| puts a

不会抛出任何错误并输出
nil


为什么它不检查参数?它背后的逻辑是什么?

Proc
不关心验证正确数量的参数,但是lambda的做

def method1(&proc)
  proc.call(1,2,3)
end

method1{ |x,y,z,a| puts a}
结果:

def method1(&proc)
  proc.call(1,2,3)
end

method1 { |x,y,z,a| puts a}
method1 lambda { |x,y,z,a| puts a }
lambda.rb:1:'method1'中:参数数量错误(给定1,应为0)(ArgumentError)
来自lambda.rb:6:in`'
从:

对于使用lambda或->()创建的进程,如果将错误数量的参数传递给具有多个参数的进程,则会生成错误。对于使用Proc.new或Kernel.Proc创建的进程,额外的参数将被自动丢弃


表示“Proc生成的Proc对象忽略额外的参数…它为缺少的参数提供nil。”。您的情况就是这样。@Inqutive:我自己没有使用过这个功能,但它可能对元编程模式有一些用处。
lambda.rb:1:in `method1': wrong number of arguments (given 1, expected 0) (ArgumentError)
    from lambda.rb:6:in `<main>'