Ruby 3.3 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Rangeクラス > overlap?
overlap?(range) -> bool
[permalink][rdoc]self と range に重なりがある場合は true を、そうでない場合は false を返します。
[SEE_ALSO] Range#cover?
例
(0..2).overlap?(1..3) #=> true
(0..2).overlap?(3..4) #=> false
(0..).overlap?(..0) #=> true
(0..).overlap?(...0) #=> false
self の端点と range の端点が比較可能でない(<=> メソッドが nil を返す)場合、false を返します。
比較可能でない例
(1..3).overlap?('a'..'d') #=> false
self または range が空である場合、false を返します。
ここで、Range が空であるとは、
のいずれかを満たすことをいいます。
Range が空である例
(0..2).overlap?(1...1) #=> false
(1...1).overlap?(0..2) #=> false
(0..2).overlap?(2..0) #=> false
なお、上記の意味において空であることと、その Range オブジェクトが表す範囲に含まれるオブジェクトが存在しないこととは、同値ではないことに注意してください。
例えば、Float クラスにおいては -Float::INFINITY が最小値であり、-Float::INFINITY より小さい値は存在しません。従って、...-Float::INFINITY という Range オブジェクトが表す範囲に含まれるオブジェクトは存在しません。
しかしながら、overlap? メソッドでは、...-Float::INFINITY は上記の「空である」条件を満たさないため、「空ではない」とみなされます。そのため、...-Float::INFINITY は ...-Float::INFINITY 自身と重なりがあると判定されます。
例
(...-Float::INFINITY).overlap?(...-Float::INFINITY) #=> true