【Ruby3.x】Set::eql?()メソッドの使い方
eql?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
eql?メソッドは、Setオブジェクトが別のSetオブジェクトと等しいかどうかを厳密に比較するメソッドです。このメソッドは、主に二つのSetが「完全に同じ要素の集合を保持しているか」を判定するために利用されます。
具体的には、eql?メソッドは以下の二つの条件をすべて満たす場合に真(true)を返し、それ以外の場合は偽(false)を返します。
一つ目の条件は、比較対象がSetクラスのインスタンスであることです。もし比較対象がSetではない場合、たとえ要素が同じに見えても等しいとは判定されません。
二つ目の条件は、両方のSetがまったく同じ要素の集合を保持していることです。Setは要素の順序を考慮しないため、要素の追加順序が異なっていても、最終的に含まれる要素が完全に一致していれば等しいとみなされます。
さらに重要な点として、個々の要素の等価性判定には、それぞれの要素自身のeql?メソッドが使用されます。これは、単なる値の等価性を判定する「==」メソッドよりも厳密な比較を意味します。例えば、整数型の1と浮動小数点数型の1.0は、「==」では等しいと判定されますが、「eql?」では異なるものとして扱われます。したがって、Setの要素としてこれらの型が混在している場合、eql?メソッドはその違いを厳密に識別します。この厳密な比較は、Setオブジェクトの同一性を厳密に保証する必要がある場面で特に役立ちます。
構文(syntax)
1require 'set' 2 3set1 = Set[1, 2, 3] 4set2 = Set[1, 2, 3] 5set1.eql?(set2)
引数(parameters)
other
- other: 比較対象のSetオブジェクト
戻り値(return)
Boolean
指定された2つのSetオブジェクトが、要素の内容および順序を含めて全く同じである場合に真 (true)、そうでない場合に偽 (false) を返します。