【Ruby3.x】Date::eql?()メソッドの使い方
eql?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
eql?メソッドは、RubyのDateクラスに属し、二つのDateオブジェクトが表す日付が互いに等しいかどうかを厳密に比較するために使用されるメソッドです。このメソッドは、比較対象のDateオブジェクトの年、月、日、そして内部で使用されている暦法まで含め、全ての要素が完全に一致する場合にのみ真(true)を返します。一つでも異なる要素があれば、偽(false)を返します。
特にこのeql?メソッドは、Dateオブジェクトをハッシュのキーとして使用する際に重要な役割を果たします。Rubyでは、ハッシュのキーとしてオブジェクトを扱う場合、そのオブジェクトのeql?メソッドとhashメソッドが連携して動作します。これにより、たとえ異なるインスタンスであっても、同じ日付を表すDateオブジェクトをハッシュのキーとして同じエントリに紐づけたり、同じ値として参照したりすることが可能になります。例えば、Dateオブジェクトをキーとした集計処理を行う場合などに、意図した通りの結果を得るために不可欠です。
Dateオブジェクトの一般的な比較には==メソッドも使用されますが、Dateクラスにおいては通常eql?メソッドと同じ結果を返します。しかし、eql?は、ハッシュの整合性を保つためのより厳密な等価性判定を提供するという点で区別され、特にシステム内部でオブジェクトの等価性を基盤とする処理において、その正確な挙動が求められます。
構文(syntax)
1require 'date' 2 3date1 = Date.new(2023, 1, 1) 4date2 = Date.new(2023, 1, 1) 5date1.eql?(date2)
引数(parameters)
other
- other: 比較対象となるDateオブジェクト
戻り値(return)
Boolean
比較対象のDateオブジェクトと同一の日付を表す場合にtrue、それ以外の場合にfalseを返します。