Feature #14580
Updated by Soilent (Konstantin x) almost 8 years ago
Given a hash
~~~ ruby
hash = { a: 2 }
~~~
I want to update a single value in the hash:
~~~ ruby
hash[:a] = hash[:a] + 42
hash[:a] #=> 44
~~~
But instead, I would like to have a method that yields the current value for a given key and associates the block result with the key (similar to Hash#update). I think that Hash#store can be extended to support a block arg.
~~~ ruby
hash.store(:a) { |val| |_key, val| val + 42 }
hash[:a] #=> 44
~~~
Or it can be something like this:
~~~ ruby
hash.transform_values(:a, :b) { |val| val + 42 }
hash[:a] #=> 44
~~~