さて、私はこれを何度も試し、何が起こったのかを理解しようとしました...
ハッシュ内のオブジェクトの束の量を合計したいとします。
orders = [{:price => 100, :qty => 5}, {:price => 120, :qty => 10}, {:price => 50, :qty => 5}]
上記のように、配列アイテム内のすべてのハッシュオブジェクトを合計したいと思います。
変数「sum」が結果であると仮定します。
sum = 0
sum = orders.each {|i| sum += i[:price] * i[:qty]}
ただし、同じハッシュオブジェクトを返します。
[{:price => 100, :qty => 5}, {:price => 120, :qty => 10}, {:price => 50, :qty => 5}]
結果は0+(100 * 5)+(120 * 10)+(50 * 5)になると思いました
なんでそうなの?
これに対する私の解決策は、次のようにすることです。sum = 0 total = []orders.each {| i | total << i [:price] * i [:qty]} total.each {| i | 合計+=i}
直感的ではないと思います