範囲オブジェクトrangeにあるinjectメソッドが何かよくわからないので調べた
http://d.hatena.ne.jp/poqute/20061218/p1
(1..3).inject {|r, i| r += i}
でも
(1..3).inject(0) {|r, i| r += i}
もおそらく同じ。
injectの引数は初期値。
初期値 init を省略した場合は、最初に先頭の要素と 2 番目の要素をブロックに渡される。
[3, 2, 1].inject {|x, i| x * i }
の場合
3と2が渡される。
=> 3 * 2
結果は6
次は、先ほどの結果6 * 1となる
=> 6 * 1
で、6