Ich habe folgende hash:`inject` Mit` Wert * qty` in einem Hash hinzuzufügen
{#<Dish:0x007fb45505ff30 @dish={:name=>"Chicken Pie", :price=>4.5}> => 2}
Um die price * qty
(die 2
am Ende ist) zu addieren, ich bin mit der Code:
@order.map { |item, qty| item.price * qty }.inject(:+)
die einen Wert von 9
zurückgibt.
Gibt es trotzdem, diesen Code zu etwas entlang der Linie der neu zu schreiben:
@order.inject(0) { |item, qty| item.price * qty }
Was ist '@ bestellen'? – sawa
Seien Sie vorsichtig bei der Verwendung Ihres benutzerdefinierten Objekts als Hash-Schlüssel. Hast du einen Hash und == oder eql implementiert? Methode? –
Wenn Sie Rails verwenden, können Sie 'sum' wie '@order.sum {| item, qty | verwenden item.price * qty} ' – potashin