2012-01-15 45 views

回答

4

你可以這樣做:

@test.inject(:+) 
+0

fold需要身份作爲初始值:'@ test.inject(0,:+)' – tokland 2012-01-15 21:46:48

+1

不適用於ruby,如果您不提供初始值,它會使用集合中的第一個值作爲初始值:http ://ruby-doc.org/core-1.9.3/Enumerable.html – 2012-01-15 21:50:35

+0

@tokland:「如果您沒有明確指定備忘錄的初始值,那麼使用集合的第一個元素作爲備忘錄的初始值「。 (來自[文檔](http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-inject)) – steenslag 2012-01-15 21:53:05

0
sum = 0 
@test.each { |el| sum+=el } 
+0

沒關係對於許多(命令式)語言,但在Ruby中,(功能性)'Enumerable#inject'是常用的解決方案。 – tokland 2012-01-15 22:03:18

相關問題