F
Fredrik
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
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