Me gustaría reemplazar cada value
en un hash con value.some_method
.¿Cómo cambiar los valores de Hash?
Por ejemplo, para dar un hash simple:
{"a" => "b", "c" => "d"}`
cada valor debe ser .upcase
d, por lo que parece:
{"a" => "B", "c" => "D"}
Probé #collect
y #map
pero siempre acaba de obtener matrices de vuelta . ¿Hay una manera elegante de hacer esto?
ACTUALIZACIÓN
Maldición, olvidé: El hash es una variable de instancia en la cual no debe ser cambiado. Necesito un hash nuevo con los valores modificados, pero preferiría no definir esa variable explícitamente y luego pasar por encima del hash que la llena. Algo así como:
new_hash = hash.magic{ ... }
el segundo ejemplo en mi respuesta devuelve un nuevo hash. comente si quiere que amplíe la magia que #inject está haciendo. – kch