トップ «前の日記(2006-06-04) 最新 次の日記(2006-06-12)» 編集

Route 477



2006-06-08

[ruby] injectとto_proc

いまさらだが、to_procってinjectと組み合わせても便利なのね。

irb(main):005:0> class Symbol ;def to_proc; Proc.new { |obj, *args| obj.send(self, *args) }; end; end
=> nil
irb(main):006:0> [1,2,3].map(&:to_s)
=> ["1", "2", "3"]
irb(main):012:0> [1,2,3].inject(&:+)
=> 6
irb(main):013:0> [1,2,3].inject(&:*)
=> 6

整数の配列の和を求めるのにブロック書くのはめんどい!と思ってた(よくArray#sumとか定義してた)んだけど、 array.inject(&:+) くらいなら許容範囲か。