Chciałbym zastąpić każdy value
w haszy z value.some_method
.Jak zmienić wartości skrótu?
Na przykład, biorąc pod uwagę prosty hash:
{"a" => "b", "c" => "d"}`
każda wartość powinna być .upcase
d, tak to wygląda:
{"a" => "B", "c" => "D"}
Próbowałem #collect
i #map
ale zawsze po prostu tablice z powrotem . Czy istnieje elegancki sposób na zrobienie tego?
UPDATE
Cholera, zapomniałem: Hasz jest w zmiennej instancji, które nie powinny być zmieniane. Potrzebuję nowego skrótu ze zmienionymi wartościami, ale wolałbym nie definiować tej zmiennej jawnie, a następnie pętli nad hashem, który ją wypełnia. Coś jak:
new_hash = hash.magic{ ... }
Drugi przykład w mojej odpowiedzi zwraca nowy skrót. skomentuj to, jeśli chcesz, żebym rozszerzył się na magię, którą robi #inject. – kch