Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

injectの使い方

injectは便利なメソッドです。
実はちゃんと意味を理解せず場当たり的に使っていたのですが…

以下の物は全部同じ意味です

(1..10).inject(0){|i,j| j += i}
#=> 55

(1..10).inject{|i,j| j += i}
#=> 55

(1..10).inject(&:+)
#=> 55

(1..10).inject(:+)
#=> 55

injectに引数を渡してあげると、それを軸に動きます。
指定しなければself.firstを軸にします。

inject(init, sys)という順なので、次のような事もできたりします

('a'..'f').inject("abcdefg", :delete)
#=> "g"

知らないといくらでも回りくどい実装ができそうでコワイですね