【发布时间】:2011-01-25 23:21:58
【问题描述】:
Ruby 在通过Proc.new 和lambda(或1.9 中的->() 运算符)创建的Procs 之间存在差异。似乎非 lambda Procs 将在块参数中传递一个数组;通过 lambda 创建的 Procs 不会。
p = Proc.new { |a,b| a + b}
p[[1,2]] # => 3
l = lambda { |a,b| a + b }
l[[1,2]] # => ArgumentError: wrong number of arguments (1 for 2)
有人了解这种行为背后的动机吗?
【问题讨论】:
-
您可能已经知道这一点,但这是可行的:
l = lambda{ |(a,b)| a+b }; l[[1,2]] #=> 3
标签: ruby functional-programming