【Ruby3.x】Date::<=>()メソッドの使い方
<=>メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
<=>メソッドは、2つの日付オブジェクトの順序関係を比較するメソッドです。このメソッドは、レシーバ(メソッドを呼び出すDateオブジェクト)と引数で渡された他の日付オブジェクトを比較し、どちらが先に当たるかを判断します。日付が同一であるか、あるいはどちらかの日付がより古いか、より新しいかを評価するために使用されます。
比較の結果は整数またはnilで返されます。具体的には、引数の日付がレシーバの日付よりも過去の日付である場合、1を返します。両者の日付が全く同じである場合、0を返します。そして、引数の日付がレシーバの日付よりも未来の日付である場合、-1を返します。もし比較対象が日付として適切でないオブジェクトであったり、日付の比較が不可能な場合は、nilが返されることがあります。
この比較結果は、日付データを昇順または降順に並べ替えたり、特定の日付が別の基準日に対してどの位置にあるかを確認したりする際に役立ちます。Rubyでは、この<=>メソッドが定義されていることで、Enumerableモジュールに含まれるsortメソッドやsort_byメソッドなど、順序付けを行う多くの場面でDateオブジェクトを直感的に扱うことが可能になります。
構文(syntax)
1require 'date' 2 3date1 = Date.new(2023, 1, 1) 4date2 = Date.new(2023, 1, 15) 5date1 <=> date2
引数(parameters)
other
- other: Dateオブジェクト、またはDateTimeオブジェクト
戻り値(return)
Integer
2つのDateオブジェクトを比較し、それらの前後関係に基づいて整数を返します。左辺のDateオブジェクトが右辺のDateオブジェクトより後の日付であれば正の整数、前の日付であれば負の整数、同じ日付であれば0を返します。