如果你能解释这段代码的第三行,请有人帮忙。此方法是从第 2 个数字开始减去一个数字数组。从第 1 号和第 3 号中减去。从结果中减去等等......
def subtract(*numbers)
sum = numbers.shift
numbers.inject(sum) { |sum, number| sum - number }
end
如果你能解释这段代码的第三行,请有人帮忙。此方法是从第 2 个数字开始减去一个数字数组。从第 1 号和第 3 号中减去。从结果中减去等等......
def subtract(*numbers)
sum = numbers.shift
numbers.inject(sum) { |sum, number| sum - number }
end
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