【Ruby3.x】Range::overlap?()メソッドの使い方
overlap?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
overlap?メソッドは、2つのRangeオブジェクトが互いに重複しているかどうかを判定するメソッドです。このメソッドは、Rangeクラスのインスタンスに対して呼び出され、引数として別のRangeオブジェクトを受け取ります。比較対象の2つの範囲が少なくとも1つの共通の要素を持つ場合、overlap?メソッドはtrueを返します。そうでない場合はfalseを返します。
例えば、1..5という範囲と3..7という範囲を比較した場合、共通の要素である3, 4, 5が存在するため、overlap?メソッドはtrueを返します。また、1..5と5..9のように、一方の範囲の終了点ともう一方の範囲の開始点が一致する場合も、重複していると見なされtrueを返します。これは、閉じた範囲として境界値を含むためです。
しかし、1..5という範囲と6..10という範囲を比較した場合、両者の間に共通の要素は存在しないため、overlap?メソッドはfalseを返します。このメソッドは、日付や時間の期間の重複チェック、数値範囲のバリデーション、予約システムにおける利用可能な時間の確認など、複数の範囲が互いに干渉しているかを効率的に判断したい場合に活用できる便利な機能です。
構文(syntax)
1(1..5).overlap?(3..7) # => true (範囲が重複している場合) 2(1..5).overlap?(6..10) # => false (範囲が重複していない場合)
引数(parameters)
other
- other: 比較対象となるRangeオブジェクト
戻り値(return)
Boolean
指定された Range オブジェクトが、他の Range オブジェクトと範囲が重なっている場合に true を返します。重なっていない場合は false を返します。