可以說我有這個數組
@test = [1, 2, 3, 4]
然後,我想做的事:
@test[0] + @test[1] + @test[2] + @test[3]
沒有更聰明,更快捷的方式嗎?
可以說我有這個數組
@test = [1, 2, 3, 4]
然後,我想做的事:
@test[0] + @test[1] + @test[2] + @test[3]
沒有更聰明,更快捷的方式嗎?
你可以這樣做:
@test.inject(:+)
fold需要身份作爲初始值:'@ test.inject(0,:+)' – tokland 2012-01-15 21:46:48
不適用於ruby,如果您不提供初始值,它會使用集合中的第一個值作爲初始值:http ://ruby-doc.org/core-1.9.3/Enumerable.html – 2012-01-15 21:50:35
@tokland:「如果您沒有明確指定備忘錄的初始值,那麼使用集合的第一個元素作爲備忘錄的初始值「。 (來自[文檔](http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-inject)) – steenslag 2012-01-15 21:53:05
sum = 0
@test.each { |el| sum+=el }
沒關係對於許多(命令式)語言,但在Ruby中,(功能性)'Enumerable#inject'是常用的解決方案。 – tokland 2012-01-15 22:03:18
看看這個:http://stackoverflow.com/questions/1538789/how-to-sum-array-members-in-ruby – 2012-01-15 21:43:53