2013-06-06 33 views
1

請幫幫忙,我是一個Ruby的學生,我知道怎麼做的.sum方法,但不是這個: 你怎麼定義和功能陣列,使得提供任何元素將導致他們的總和。格式應該是sum([array inputs])返回數組元素的總和。用於離:總和([])應該返回0,總和([1,2,3])返回圖6(#again,不[1,2,3]的.sum)。我被困在箱子裏,非常感謝你的幫助。定義和功能在Ruby中

+0

尋找'Array#sum'的來源:) –

+0

你知道什麼'sum'方法?你提到Rails嗎? – sawa

回答

2

解決方案與Enumerable#inject用法:

def sum(array) 
    array.inject(0){|sum, el| sum + el} 
end 

或者,作爲建議,更短和更優雅的形式:

def sum(array) 
    array.inject(0, :+) 
end 
+0

哇...你真棒,它就像一個魅力。非常感謝你。 –

+3

或'array.inject(0,:+)'。 – tokland

+0

或'array.sum' - 查看NikDP的答案 – ovhaag

0
def sum(arr) 
sum = 0 
arr.each{|element| sum=sum+element } 
return sum 
end 
+0

雖然這很有效,但在Ruby中做事的方式並不是慣用的(並且'return'絕對不是**慣用的)。 – tokland

+0

非常感謝,這是我的水平:) –

+0

歡迎金正日二:) – bunty

1

這樣做:

def sum(array) 
    array.reduce(0, :+) 
end 
+0

非常感謝! –

+1

其實,你並不需要'0'。你可以做'array.reduce(:+)'。 – sawa

+0

@sawa'[] .reduce(:+)#=> nil' – toro2k

1

使用數組求和方法。

arr = [1,2,3] 
arr.sum 


def sum(arr) 
    arr.sum 
end