0

如果你能解释这段代码的第三行,请有人帮忙。此方法是从第 2 个数字开始减去一个数字数组。从第 1 号和第 3 号中减去。从结果中减去等等......

def subtract(*numbers)

  sum = numbers.shift

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

end
4

1 回答 1

0

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

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
于 2012-10-07T15:14:22.123 回答