ich eine Rails-Anwendung bin die Schaffung und haben diesen Code in einem meiner MethodenWarum muss ich .inject (0) anstelle von .inject verwenden, damit dies funktioniert?
item_numbers.inject(0) {|sum, i| sum + i.amount}
item_numbers ist ein Array von Objekten aus meiner item_numbers Tabelle. Die Methode .amount, die ich auf sie anwende, sucht den Wert einer Elementnummer in einer separaten Tabelle und gibt sie als BigDecimal-Objekt zurück. Offensichtlich fügt die inject-Methode dann alle zurückgegebenen i.amount-Objekte hinzu und das funktioniert einwandfrei.
Ich bin nur neugierig, warum es nicht funktioniert, wenn ich als
diese Aussage schriebitem_numbers.inject {|sum, i| sum + i.amount}
Nach meinem treuen pickaxe Buch diese gleichwertig betrachtet werden sollte. Liegt es daran, dass i.amount ein BigDecimal ist? Wenn ja, warum funktioniert es jetzt? Wenn nicht, warum funktioniert es dann nicht?
Sie können tun, einen kleinen Test (10..15) .inject tun | Summe, i | p Summe Summe + i Ende es wird zurück: 10, 21, 33, 46, 60 => 75 Wie Sie _sum_ bekommt erstes Element von Array als Anfangswert – fl00r
Das erklärt es schön zu sehen. Vielen Dank. – brad