rubyはProc.new
とlambda
(または1.9の->()
演算子)で作成されたProcsの違いがあります。 non-lambda Procsは、ブロック引数を渡って渡された配列をスプライスします。ラムダを介して作成されたProcsはそうしない。ProcとLambdaの違い
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' – Phrogz