[#119637] Behavior of raising from rescue blocks when multiple rescue blocks exist — Rodrigo Rosenfeld Rosas via ruby-core <ruby-core@...>
Hello, I couldn't find any documentation about the subject, so I thought
3 messages
2024/10/29
[ruby-core:119484] [Ruby master Feature#20738] Removing a specific entry from a hash literal
From:
"ursm (Keita Urashima) via ruby-core" <ruby-core@...>
Date:
2024-10-08 23:30:58 UTC
List:
ruby-core #119484
Issue #20738 has been updated by ursm (Keita Urashima).
OK, I'm sorry to hear that, but I'm glad to hear your opinions. Thanks.
----------------------------------------
Feature #20738: Removing a specific entry from a hash literal
https://bugs.ruby-lang.org/issues/20738#change-110101
* Author: ursm (Keita Urashima)
* Status: Open
----------------------------------------
Sometimes I want to decide whether or not to add a particular entry to a hash depending on a condition. If the entire hash does not use nil, I can use Hash#compact.
```ruby
{
foo: 1,
bar: bar? ? 2 : nil
}.compact
```
But if I want to remove only a specific entry while leaving the other nil, it is somewhat cumbersome. I have to either assign the hash once and change it destructively, or use Hash#reject.
``` ruby
h = {
foo: 1,
baz: nil
}
h[:bar] = 2 if bar?
```
``` ruby
{
foo: 1,
bar: bar? ? 2 : :drop,
baz: nil
}.reject {|_, v| v == :drop }
```
As a suggestion, how about a special value that indicates an invalid key for the hash? With this, the above example could be written like this:
``` ruby
{
foo: 1,
bar: bar? ? 2 : Hash::DROP,
baz: nil
} #=> {foo: 1, baz: nil}
```
--
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/lists/ruby-core.ml.ruby-lang.org/