たけ(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)=熊谷秀武