injectつづき

すみません。その後、実装自体が不要だということがわかりました。
うーん、Enumerableってeach(とEnumerableで定義されているメソッド)以外を使っていいのかな([]って定義されている保証がなさそう)。でもそうすると以下のような実装になるのかな(to_aとかで一旦配列にするのも効率悪そうだし)。美しくないなぁ。

module Enumerable
  def inject1
    first_f = true
    result = nil
    each do |item|
      if first_f
        result = item
        first_f = false
      else
        result = yield(result, item)
      end
    end
    result
  end
end

p (1 .. 10).to_a.inject1 {|result, item| result + item }  # => 55
p (1 .. 20).to_a.inject1 {|result, item| result + item }  # => 210