gpt4 book ai didi

ruby - 为什么 proc 不关心参数的数量?

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:47 28 4
gpt4 key购买 nike

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

method1{ |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}
method1 lambda { |x,y,z,a| puts a }

结果:

lambda.rb:1:in `method1': wrong number of arguments (given 1, expected 0) (ArgumentError)
from lambda.rb:6:in `<main>'

来自ruby docs :

For procs created using lambda or ->() an error is generated if the wrong number of parameters are passed to a Proc with multiple parameters. For procs created using Proc.new or Kernel.proc, extra parameters are silently discarded.

关于ruby - 为什么 proc 不关心参数的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40707315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com