reduce / inject 各要素に対して{}ブロック内の式を順次実行し、最後までのブロックの実行結果 を返します。 ブロックパラメータ(||で囲まれた箇所)の1つ目には前回の実行結果が入り、2つ目のパラメータには次の要素が入ります。 inject は reduce と同義です。 # 配列の合計を求める [1, 2, 3, 4, 5].inject { |result, item| result + item } # => 15 # ちなみにブロックパラメータにはこんな感じで値が設定される # 1回目のループ … |要素1, 要素2| # 2回目のループ … |前回の結果, 要素3| # 3回目のループ … |前回の結果, 要素4| # 4回目のループ … |前回の結果, 要素5| # 最大値を求める [1, 2, 3, 4, 5].inject { |max, item| item