このコードの 3 行目を説明できる人がいたら教えてください。このメソッドは、2 番目の番号から始まる数字の配列を減算することです。1番目と3番目の番号から差し引かれます。結果から差し引いたものなど...
def subtract(*numbers)
sum = numbers.shift
numbers.inject(sum) { |sum, number| sum - number }
end
このコードの 3 行目を説明できる人がいたら教えてください。このメソッドは、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 から最初の要素を引き、その結果から 2 番目の要素を引きます。
そのため、以下に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