From: take_tk Date: 2006-09-08T15:45:43+09:00 Subject: [ruby-list:42784] Hash#partition が Hashを返すようになる予定はありますか? たけ(tk)です Hash#partition が Hashを返すようになる予定はありますか? 現在の仕様だと二重配列に変換されたものが二つ返るのですが、ハッシュの分割 だからハッシュを二つ返してほしい。 ---- h = {1=>11,2=>22,3=>33,4=>44,5=>55} p h.partition{|k,v| k%3==1 } [ [[1, 11], [4, 44]], [[5, 55], [2, 22], [3, 33]] ] ---- module Enumerable alias divide partition end class Array def divide!( &block ) ret1,ret2 = divide( &block ) self.replace ret2 ret1 end end class Hash def divide( &block ) ret1,ret2 = super( &block ) # call Enumerable#divide ret1 = Hash[*ret1.flatten] ret2 = Hash[*ret2.flatten] [ret1,ret2] end def divide!( &block ) ret1,ret2 = divide( &block ) self.replace ret2 ret1 end end h = {1=>11,2=>22,3=>33,4=>44,5=>55} p h.divide{|k,v| k%3==1 } [{1=>11, 4=>44}, {5=>55, 2=>22, 3=>33}] ---- Take_tk = KUMAGAI Hidetake たけ(tk)=熊谷秀武