Ruby通過Proc.new
和lambda
(或在1.9中的->()
運算符)創建的Procs之間存在差異。看來non-lambda Procs將會在塊參數中傳入一個數組,通過lambda創建的代碼不會。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 2011-01-26 05:32:54