[#113435] [Ruby master Feature#19634] Pattern matching dynamic key — "baweaver (Brandon Weaver) via ruby-core" <ruby-core@...>
Issue #19634 has been reported by baweaver (Brandon Weaver).
6 messages
2023/05/09
[#113489] [Ruby master Bug#19642] Remove vectored read/write from `io.c`. — "ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>
Issue #19642 has been reported by ioquatix (Samuel Williams).
10 messages
2023/05/15
[ruby-core:113707] [Ruby master Feature#19699] Need a way to store values like dig
From:
"edufcarvalho (Eduardo Carvalho) via ruby-core" <ruby-core@...>
Date:
2023-05-30 20:05:09 UTC
List:
ruby-core #113707
Issue #19699 has been reported by edufcarvalho (Eduardo Carvalho).
----------------------------------------
Feature #19699: Need a way to store values like dig
https://bugs.ruby-lang.org/issues/19699
* Author: edufcarvalho (Eduardo Carvalho)
* Status: Open
* Priority: Normal
----------------------------------------
Currently, there is no way to perform a `.store` operation on nested hashes in Ruby as there is for accessing them using `.dig`, so I would like to propose something like:
Hash#dig_store(*args, **kwargs, arg = nil), which fills the value at *args with **kwargs if the value at *args is a hash, or with arg if the value is something else. Here are some examples:
```ruby
a = {}
a.dig_store(:a, :b, :c, :d, 10)
=> {:a=>{:b=>{:c=>{:d=>10}}}}
```
```ruby
a = {}
a.dig_store(:a, :b, :c, :d, a: 10, b: 20, c: 30)
=> {:a=>{:b=>{:c=>{:d=>{:a=>10, :b=>20, :c=>30}}}}}
```
```ruby
a = {a: {b: {c: "test"}}}
a.dig_store(:a, :b, :c, "123")
=> {:a=>{:b=>{:c=>"123"}}}
```
```ruby
a = {a: {b: {c: {}}}
a.dig_store(:a, :b, :c, a: 10, b: 20)
=> {:a=>{:b=>{:c=>{:a=>10, :b=>20}}}}
```
I'm not that skilled on Ruby (actually a Junior developer), but i'm looking forward to implementing it if the core team approves it
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/