>           self[k] = Array[self[k]] + Array[v]

Oops, I meant to write:

          self[k] = Array(self[k]) + Array(v)

Otherwise, if the value is already an array, it will be wrapped in 
another one.

This does highlight a limitation of this API thought. What if the values 
themselves are arrays?

   h = { "foo" => [1,2] }
   h.merge_add!({ "foo" => [3,4] })
   # do you want h = { "foo" => [[1,2], [3,4]] } ?

In that case, it would be better to insist that the hash values are 
arrays in the first place, as shown by Stefan Rusterholz's collector 
example earlier.

Also, are you happy for duplicate values to be inserted?

   h = { "foo" => "bar" }
   h.merge_add!({ "foo" => "bar" })
   # h = { "foo" => ["bar", "bar"] }  ?
-- 
Posted via http://www.ruby-forum.com/.