Project

General

Profile

Feature #14580

Updated by Soilent (Konstantin x) over 2 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 
 ~~~

Back