Project

General

Profile

Feature #13314

Updated by nobu (Nobuyoshi Nakada) over 2 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