こんなinjectはいかが

id:omochist:20060716:1153060521
マニア喜ぶinject。Enumerableモジュールに定義を移動して、オリジナルのinjectを呼ぶようにしてみました。

module Enumerable
  def inject_with_proc(init, proc_obj)
    inject(init) {|result, item| proc_obj.call(result, item) }
  end
end

proc_obj = lambda do |result, item|
  result += item
end

p (1 .. 10).to_a.inject_with_proc(0, proc_obj) # => 55
p (1 .. 20).to_a.inject_with_proc(0, proc_obj) # => 210

ブロックとProcオブジェクトって統一的に扱えないものかな? 同じように使えたら便利な気がします。
(追記: 7/17) id:m_sekiさんから以下にように書けることを教えていただきました。どうもありがとうございます。すばらしい。これこれ、こんな感じです。

p (1 .. 10).to_a.inject(0, &proc_obj) # => 55
p (1 .. 20).to_a.inject(0, &proc_obj) # => 210