hash = {a: 1, b: 2, c: 3} hash2 = hash.map {|k, v| [k, v * 2] }.to_h p hash2 # => {a: 2, b: 4, c: 6}
めんどくさい。Scala には mapValues というのがあるらしい。
Ruby で書くならこうかな。
class Hash def map_values(&block) dup.map_values!(&block) end def map_values!(&block) update(self) {|_, v| block.call(v) } end end hash = {a: 1, b: 2, c: 3} hash2 = hash.map_values {|v| v * 2 } p hash2 # => {a: 2, b: 4, c: 6}