
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/