On Jan 28, 2009, at 2:31 PM, Tim Hunter wrote: > Bryson Smith wrote: >> Hi, >> >> I'm wondering if it is possible to "add" the values of two hashes >> together. Suppose I had: >> >> hash1 = {:key_one=>100, :key_two=>200} >> hash2 = {:key_two=>300, :key_three=>400} >> >> I'd like to "add" the hashes together so that I get >> >> result => {:key_one=>100, :key_two=>500, :key_three=>400} >> >> Do I need to write my own function to parse through each hash's keys? >> Is there a built-in way to do this? >> >> Thanks! > > No built-in way, but it would be easy to use hash1.each_key to iterate > over the keys of hash1. For every key in hash1, get its value for that > key from hash1 and hash2, add the two values and store the sum as the > value of that key in result. > > The question is, what happens if there's a key in hash1 that isn't in > hash2, or vice versa? In case it was missed the first time: irb> result = hash1.merge(hash2) {|key,val1,val2| val1+val2} => {:key_two=>500, :key_three=>400, :key_one=>100} You only have to write the block that deals with the duplicates for 'key' -Rob Rob Biedenharn http://agileconsultingllc.com Rob / AgileConsultingLLC.com