【发布时间】:2013-04-18 07:18:46
【问题描述】:
如下面的 ruby 示例所示,我不能调用带有错误数量的参数的 lambda,因为它对参数数量非常严格:
# 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
如何从Proc 或Method 获得不是lambda 的Proc?
【问题讨论】:
-
据我所知,您不能将方法或 lambda 转换为非 lambda proc。你想完成什么?
-
@WallyAltman 块的调用语义,首先是关于参数的数量,但还有其他一些区别。