2014-01-18 38 views
3

當我在Ruby中編寫方法時,我常常會想:「我敢打賭,這可以做得更簡單」。這是一個示例方法。它添加從1開始的所有數字,直到數字n。有沒有辦法讓變量solution簡化Ruby方法:將不必要的變量關閉

def sum n 
    solution = 0 
    for i in 1..n do 
     solution += i 
    end 
    solution 
end 

回答

2

falsetru的是和速記答案。但爲了對擴大自己的利益,inject通常看上去更像是這樣的:

def sum n 
    (1..n).inject {|result, i| result + i} 
end 

在這個例子中,該塊的結果反饋作爲result每次連續迭代,所以它建立一個累積總。

inject是非常通用的,但有很多其他迭代器可以幫助您節省管理計數變量。查找times,eachmap首先。