2007年 10月 25日

Enumerable#group_by

なんでないんだろう。いままで partition がこれだとおもってた。

module Enumerable
	def group_by(&block)
		self.inject({}) {|r,i| (r[yield i] ||= []) << i; r}.values
	end
end

foo = Array.new(10) { rand(40) }

require "pp"
pp foo.group_by {|i|
	("%02d" % i)[0]
}

partition より汎用的で、partition にするにも ! 一個足すだけだからこっちがあったほうがいいと思うんだけどなぁ

検索してみると既出すぎる……ActiveSupport にもあるんだ