Rubyのinjectが便利な件

injectが便利なので、使い方をまとめてみた

使い方

  • 引数で初期値を指定
  • ブロックの返り値が、ブロックの第一引数に代入

使用例(Array)

今までだと、

hoge = [1, 2, 3, 4, 5]
sum = 0
hoge.each{|i| sum += i}
sum
#=> 15

と書かなければならなかったものが、

hoge = [1, 2, 3, 4, 5]
hoge.inject(0){|sum, i| sum += i}
#=> 15

使用例(Hash)

ほとんどArrayに同じ

hoge = {:a => 1, :b => 2, :c => 3, :d => 4, :e => 5}
hoge.inject(0){|sum, pair| sum += pair[1]}
#=> 15

# この場合、pairに[:a, 1]などが代入される

まとめ

ブロックの返り値が第一ブロック変数に代入されるところがミソかなと個人的には思っています。
こんな感じで、コード量が少なくて済むので便利です。


最後までお読みいただきありがとうございました。