こんな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