这段代码按预期工作(什么也不做,甚至不会产生警告/错误):
l = lambda {|i|}
l.call(1)
此代码生成警告(警告:一个块参数有多个值(0代表1)):
l = lambda {|i|}
l.call
此代码失败并返回错误(ArgumentError:参数数量错误(2为0)):
l = lambda {|i, y|}
l.call
我认为lambda需要传递所有的参数。
从第二个例子中我发现它不是这样的,为什么它在只给出一个参数的情况下工作,而在有多个参数的情况下按预期工作(由于错误而失败)?
PS: ruby 1.8.6 (2008-08-11补丁级别287)通用-darwin9.0
更新:我已经用ruby 1.9.1p376检查了这些示例。它按照预期工作--第二个例子也产生了一个错误。看起来这是1.8版本(或<=1.8)的一个特性
https://stackoverflow.com/questions/2232283
复制相似问题