[#114774] [Ruby master Feature#19884] Make Safe Navigation Operator work on classes — "p8 (Petrik de Heus) via ruby-core" <ruby-core@...>
Issue #19884 has been reported by p8 (Petrik de Heus).
13 messages
2023/09/15
[ruby-core:114717] [Ruby master Feature#19839] Need a method to check if two ranges overlap
From:
"baweaver (Brandon Weaver) via ruby-core" <ruby-core@...>
Date:
2023-09-13 05:58:04 UTC
List:
ruby-core #114717
Issue #19839 has been updated by baweaver (Brandon Weaver).
I believe there are a few reasons for this addition. The core one I see often in justifications is precedence in existing Ruby, such as:
**Combinations**
These cases have clear precedent for iterable / enumerable types:
* `Array#concat` - Merging two Arrays
* `Hash#merge` - Merging two Hashes
* `Set#union` - Merging two Sets (or Enumerable on other end)
**Inclusions**
Interestingly not as common are patterns like `Enumerable#include?(other_enumerable)` versus the very common `Enumerable#include?(single_item)` so we have a lot of "unnamed" approximations:
* `Array` - `(array_two - array_one).empty?` or `array_one.intersection(array_two).any?`
* `Hash` - `(hash_two.keys - hash_one.keys).empty?`
...which are not very performant, and I would bet are common patterns in non-Rails code. It also raises a potential for `Hash#intersection` and how that might work with same keys with different values.
**Overlaps**
For these two cases I would also almost consider `overlaps?`, which is synonymous to `intersection(other).any?` from `Array`:
```ruby
[1, 2, 3].overlaps?([2, 3]) # true
{ a: 1, b: 2 }.overlaps?(a: 3, b: 5) # true? key vs value is complicated here
(1..10).overlaps?(5..15) # true
```
----
Point being I would argue there is a (minor) performance win potential here for existing code, it feels very much in the spirit of Ruby of creating a name for a common operation.
----------------------------------------
Feature #19839: Need a method to check if two ranges overlap
https://bugs.ruby-lang.org/issues/19839#change-104552
* Author: shouichi (Shouichi KAMIYA)
* Status: Open
* Priority: Normal
----------------------------------------
It would be convenient to have a method that checks if two ranges overlap. For example,
```
(0..10).overlap?(5..15) #=> true
(0..10).overlap?(20..30) #=> false
```
--
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/