Project

General

Profile

Feature #13314

Updated by nobu (Nobuyoshi Nakada) over 3 years ago

We have `Hash#dig`, and when we want to assign a key-value at a deep level, it is tempting to do: 

 ```ruby 
 hash.dig(:key1, :key2, :key3, :key4) = "value 
 ``` 

 when we actually needed to do: 

 ```ruby 
 hash.dig(:key1, :key2, :key3)&.[]=(:key4, "value") 
 ``` 

 I propose a method `Hash#dig=`, which should be equivalent to the following: 

 ```ruby ``` 
 class Hash 
   def dig=(*keys, final_key, value) 
     dig(*keys)&.[](final_key, value) 
   end 
 end 
 ``` 

Back