follow us in feedly

Rubyのinjectで配列の各要素の合計を計算する

Rubyのinjectで配列の各要素の合計を計算する方法のメモ。

Rubyで配列の合計を計算したいとなったんだけど、
ふと、いつもと違うやり方はないかな、ちょっとでも簡単に書きたいなと思って、
Rubyなら何か方法があるんじゃないのと調べてみました。

そしたら、ありました。
Enumerable#injectで配列の合計がちょっとだけスッキリ書けます。

injectで配列の値の合計を計算する

配列の合計を計算する場合は、たいていこんな感じになります。
下記は1から10までの値を合計しています。

sum = 0
(1..10).each { |i| sum += i }
p sum # 55

上記をinjectを使って書くとこうなります。
injectに渡す引数は、sumの初期値になります。つまり、sum = 0です。
引数を省略したときは、先頭の要素をsumに代入して、2番目の要素からループが開始します。
また、injectは返り値としてsumの値を返します。

(1..10).inject(0) { |sum, i| sum + i } # 55

# 引数を省略
# sum = 1として、sum + 2からループ開始
(1..10).inject { |sum, i| sum + i } # 55

ということで、injectで配列の合計の計算がちょっとだけスッキリ書けました。

injectは、引数に渡すオブジェクトの種類によって使い道がいろいろあるようですが
そのあたりはもうちょっと勉強して使ってみないとよくわかんないな。

タグ: ,

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください