2016-07-29 5 views
0

以下は配列合計アルゴリズムのために提出したコードです。この場合、私はそれぞれを使用しなければなりませんでしたが、これを行うより良い方法があるように感じます...配列の合計を.eachで解決する最善の方法

numbers = [5, 17, 2, 899, 101, 4, 66, 123, 98] 
sum = 0 
index = 0 
numbers.each do |number| 
    sum = sum + numbers[index] 
    index += 1 
end 
puts sum 
+1

を行うことができます(:+)#=> 1315年。 –

+0

私は詳しく述べるべきです。 'numbers.reduce(:+)'は 'numbers.reduce {| total、n |と同じ結果を返します。合計+ n} ' [Enumerable#reduce](http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-reduce)(別名 'inject')を参照してください。なぜこれが本当であるのかを説明するのは時期尚早です。今のところ、前者は後者を書くための簡略な方法だと考えてください。 'reduce'のレシーバは配列(' numbers')または列挙子( 'numbers.each')です。後者は前者の要素を生成するため、いずれかを使用することができます。 IRBで 'e = numbers.each'と' e.to_a'を実行してみてください。 –

答えて

1

あります。 eachを使用しているときにインデックスを手動でトラッキングする必要はありません。 (:+) `が、あなたは` each`を使用する必要があるため、私は `numbers.each.reduceお勧めしますが、単純に通常の方法は、` numbers.reduceある

numbers.each do |number| 
    sum = sum + number 
end 
関連する問題