如下面的ruby示例所示,我不能调用lambda
参数的数量错误Proc
从Method
创建,因为它严格限制参数的数量:如何将方法或lambda转换为非lambda 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
我如何获得一个Proc
,是不是无论是从Proc
一个lambda是或从Method
?
据我所知,您不能将方法或lambda转换为非lambda proc。你想达到什么目的? – 2013-04-24 17:51:36
@WallyAltman块的调用语义,首先是关于参数的数量,但还有其他几个不同之处。 – michelpm 2013-04-24 17:58:06