【Ruby3.x】Range::eql?()メソッドの使い方
eql?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
eql?メソッドは、RubyのRangeオブジェクトが値として厳密に等しいかどうかを判定するメソッドです。このメソッドは、ハッシュのキーとしてオブジェクトを使用する場合など、単なる値の等価性以上の厳密な比較が必要な場面で利用されます。
eql?メソッドがtrueを返すには、比較対象の二つのRangeオブジェクトが以下のすべての条件を満たす必要があります。まず、両方のオブジェクトが同じRangeクラスのインスタンスでなければなりません。次に、それぞれの範囲の開始値がeql?メソッドを用いて等しいと判断されること。そして、それぞれの範囲の終了値もeql?メソッドを用いて等しいと判断されること。最後に、範囲の終端が含まれるか否か、つまり終端が排他的であるかどうかの設定(exclude_end?)が、両方のオブジェクトで完全に一致している必要があります。
これらの条件がすべて満たされた場合にのみtrueを返し、一つでも条件が満たされない場合はfalseを返します。通常の==メソッドが値の等価性のみを比較するのに対し、eql?メソッドは、オブジェクトの型や内部的な詳細設定まで含めた、より厳格な等価性を判定する点で異なります。これにより、意図しない挙動を防ぎ、プログラムの正確性を高めることができます。
構文(syntax)
1range_a = (1..5) 2range_b = (1..5) 3range_c = (1...5) 4 5range_a.eql?(range_b) # => true (開始値、終了値、排他性が全て同じ) 6range_a.eql?(range_c) # => false (排他性が異なるため)
引数(parameters)
other
- other: 比較対象のRangeオブジェクト
戻り値(return)
Boolean
Rangeオブジェクトが、別のRangeオブジェクトと値および範囲が完全に一致する場合、真偽値のtrueを返します。それ以外の場合はfalseを返します。