From: Fredrik Date: 2009-04-29T15:00:03+09:00 Subject: Hash#map Is there any good reason why Hash#map does not give back a Hash (Ruby 1.8 but same in 1.9 as far as I know)? I often find myself writing these kind of things: newhash = oldhash.inject({}) { |h,(k,v)| h[k] = some_operation(v); h } but that doesn't look pretty at all in my opinion. I want to just write like this: newhash = oldhash.map { |k,v| some_operation(v) } I finally got around to change this behaviour for my own code, but are all Ruby users supposed to invent this wheel on their own? Wouldn't it be better if Hash#map behaved like this? Or is there something I am missing? class Hash def hashmap self.inject({}) do |newhash, (k,v)| newhash[k] = yield(k, v) newhash end end end Regards, Fredrik