如下面的ruby示例所示,我不能lambda使用Proc从a创建的错误数量的参数调用,Method因为它对参数的数量是严格的:
# 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
Run Code Online (Sandbox Code Playgroud)
我如何得到一个Proc不是来自一个Proc或来自一个lambda的lambda Method?
没有办法做到这一点。
除了传递参数之外,我想知道您对return方法中的 a 有何期望。它只能以某种lambda方式表现...
如果你真的必须这样做,你将需要构建自己的块,例如
Proc.new{ a }
Run Code Online (Sandbox Code Playgroud)
对于更通用的方法,您必须检查arity方法并仅传递所需的参数。
| 归档时间: |
|
| 查看次数: |
2734 次 |
| 最近记录: |