[#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:113709] [Ruby master Feature#19699] Need a way to store values like dig
From:
"byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Date:
2023-05-30 22:09:15 UTC
List:
ruby-core #113709
Issue #19699 has been updated by byroot (Jean Boussier).
Status changed from Open to Closed
I believe this is a duplicate of [Feature #14564], [Feature #13179] and [Feature #11747].
This was previously rejected by Matz because it was lacking a use case and lacking a proper name.
I'm somewhat sympathetic to this feature request, but I don't think it really move the needle in term of proposal, so I'll close it as duplicate.
Thanks though.
----------------------------------------
Feature #19699: Need a way to store values like dig
https://bugs.ruby-lang.org/issues/19699#change-103360
* Author: edufcarvalho (Eduardo Carvalho)
* Status: Closed
* 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/