2012-01-03 96 views
1

我在滑軌工作3.1作爲相對小白,並已成功使用此代碼(其中日期和amount_cents是分貝屬性)以提取用戶事務從分貝量爲日期排序的數組:如何計算數組元素的運行總數?

@user_trans = User.transactions.order(「date」)。map {| t | t.amount_cents}

=> [1000,-350,-250,600,750,-450]

我很容易地得到一個總陣列的與:

@ user_trans.sum => 1300

但我只是無法弄清楚是遍歷數組中的每個元素,第一個元素添加到第二個,第二個第三個,等等,導致運行總計一種優雅的方式:

[1000,650,400,1000,1750,1300]

似乎每個orinject都是使用的方法,但除了笨重的多行破解之外,我還沒有找到這樣做的魔法語法,但似乎應該有一個簡化的方法。順序非常重要。也許退掉總數,然後扭轉?

我坐在腳下,充滿希望的期待...... :)

回答

4

這裏是一個單線。需要to_i來處理結果數組爲空的第一個元素(nil.to_i將評估爲0)。

@user_trans.inject([]) { |result, element| result << result.last.to_i + element } 
+0

太棒了!完美優雅。這是我錯過的.last選擇器。謝謝。 – awvidmer 2012-01-03 17:43:43