http://codepad.org/wmyzqlis   i'd merge these 2 arrays:   a = { :a => 'a', :b => 'b', :d => 'd' } b = { :a => '1', :b => 'b', :c => 'c' }   into hash looks this:   {:a => ["a", "1"], :b => ["b", "b"], :c => [nil, "c"], :d => ["d", nil] }   this doesn't work:   p a.merge(b) { |k, v1, v2| [v1, v2] }    # {:c=>"c", :a=>["a", "1"], :b=>["b", "b"], :d=>"d"}          it's because hash#merge  call block duplicate keys.     a = { :a => 'a', :b => 'b', :d => 'd' } b = { :a => '1', :b => 'b', :c => 'c' }  hash[(a.keys|b.keys).map { |key|   [key, [a.fetch(key, nil), b.fetch(key, nil)]] }] # => {:a=>["a", "1"], :b=>["b", "b"], :d=>["d", nil], :c=>...
 
Comments
Post a Comment