2014-01-28 36 views
0

我有8個交易在Ruby陣列中添加(@transactions)和每筆交易都有與之相關聯的,我需要添加得到一個號碼,每次交易的數量之和的數值。我如何使用代碼塊將數字相加?代碼塊是迭代獲得總數的最佳方式嗎?如何。每一個代碼塊

@transactions.each do | t | 

    # ?? 

end 
+1

在Ruby中,和許多其他事情一樣,有許多「最好」的方法,每個方法都取決於上下文。 –

+3

給定一筆交易't',您如何獲得您的「號碼價值」? – Matt

回答

4

的Ruby on Rails有sum功能:

@transactions.sum { |t| t.number_value } 

,或者如果你想要更多的簡潔

@transactions.sum(:number_value) 
+0

請注意,此答案中的第二種方式只能由「Ruby on Rails」本身提供,而不是Ruby語言編程語言。但是,它聽起來就像你正在使用Rails的,這樣應該就可以了:)呵呵我想你曾提到「導軌」在回答的開頭:P – nzifnab

+0

解決了!謝謝! – user3245766

+0

在Rails中,後者肯定會優越 - 它將總和推到數據庫並返回所需的值。更快,更簡單。 –

2

做如下使用Enumerable#reduce

@transactions.reduce(0) { |sum,ob| sum + ob.number_val } 
-1

嘗試以下碼。雖然這個問題可能早就回答了。在發佈之前,您應該先回答一下問題。

@transaction.inject(0){|sum,x| sum + x.number_value } 
+0

'reduce'和'inject'之間的差異? –

+0

@ArupRakshit注入更多如何科學=) –

+0

@ArupRakshit:他們是相同的。同一方法的不同名稱。 – Saurabh

相關問題