2012-10-07 75 views
0

請有人,如果你可以解釋這段代碼的第三行。這種方法是從第2號開始減去一組數字。從第1和第3號減去。從所得中扣除,等等...關於使用注入紅寶石

def subtract(*numbers) 

    sum = numbers.shift 

    numbers.inject(sum) { |sum, number| sum - number } 

end 

回答

0

http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-inject

沒有什麼是注射需要一定的初始值(和),並應用了一些對它的操作爲您的枚舉的每個元素。因此,在這裏,我們取1,並從1中減去第一個元素,並從該結果中減去第二個元素,等等...

所以下面我們有1 - 2 = -1,然後-1 - 3 = -4

>> numbers=[1,2,3] 
=> [1, 2, 3] 
>> sum = numbers.shift 
=> 1 
>> numbers 
=> [2, 3] 
>> numbers.inject(sum) { |sum, number| sum - number } 
=> -4