我創建一個Rails應用程序,並使用該代碼在我的一個方法爲什麼我需要使用.inject(0)而不是.inject來完成這項工作?
item_numbers.inject(0) {|sum, i| sum + i.amount}
ITEM_NUMBERS是從我ITEM_NUMBERS表對象的數組。我應用於它們的.amount方法在單獨的表中查找item_number的值,並將其作爲BigDecimal對象返回。顯然,注入方法然後添加所有返回的i.amount對象,這工作得很好。
我只是好奇,爲什麼當我寫這篇聲明的
item_numbers.inject {|sum, i| sum + i.amount}
據我信賴的鶴嘴鋤,這些書應該相當於沒有工作。是否因爲i.amount是BigDecimal?如果是這樣,爲什麼它現在工作?如果不是,那爲什麼它不起作用。
您可以做一點測試 (10..15).inject do | sum,i | p總和 總和+ I 端 它將返回: 10,第21,33,46,60 => 75 正如你可以看到_sum_會從陣列的第一項作爲初始值 – fl00r 2010-03-22 12:05:24
這解釋了它很好。謝謝。 – brad 2010-03-22 12:06:09