17

これを行うことについて話しているところはどこにも見つからないようです。

ハッシュ{"23"=>[0,3]}があり、このハッシュをマージしてこのハッシュを作成したいとし{"23"=>[2,3]}ます。{"23"=>[0,2,3]}

{"23"=>[3]}または、とマージし{"23"=>0}て取得するのはどうですか{"23"=>[0,3]}

ありがとう!

4

1 に答える 1

37
{ "23" => [0,3] }.merge({ "23" => [2,3] }) do |key, oldval, newval| 
  oldval | newval
end
#=> {"23"=>[0, 3, 2]}

非配列値を処理するためのより一般的な方法:

{ "23" => [0,3] }.merge({ "23" => [2,3] }) do |key, oldval, newval|
  (newval.is_a?(Array) ? (oldval + newval) : (oldval << newval)).uniq
end

Marc-AndréLafortuneのヒントで更新されました。

于 2012-06-23T18:24:10.513 に答える