gpt4 book ai didi

ruby - 如何将方法或 lambda 转换为非 lambda proc

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:39 26 4
gpt4 key购买 nike

如下面的 ruby​​ 示例所示,我无法调用参数数量错误的 lambda 作为从 Method 创建的 Proc因为它对参数的数量很严格:

# method with no args
def a; end

instance_eval(&method(:a))
# ArgumentError: wrong number of arguments (1 for 0)

method(:a).to_proc.call(1, 2, 3)
# ArgumentError: wrong number of arguments (3 for 0)

method(:a).to_proc.lambda?
# => true

如何从 ProcMethod 中获取不是 lambda 的 Proc

最佳答案

没有办法做到这一点。

除了参数传递之外,我想知道您对方法中的 return 有什么期望。它只能以 lambda 方式运行...

如果你真的必须这样做,你将需要构建自己的 block ,例如

Proc.new{ a }

对于更通用的方法,您必须检查方法的 arity 并仅传递必需的参数。

关于ruby - 如何将方法或 lambda 转换为非 lambda proc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197082/

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