【Ruby3.x】Hash::eql?()メソッドの使い方
eql?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
eql?メソッドは、RubyのHashオブジェクトが、別のHashオブジェクトと厳密に等しいかどうかを判定するメソッドです。このメソッドは、呼び出し元のハッシュと引数として渡されたハッシュを比較し、両者がまったく同じ内容である場合にtrueを、そうでない場合にfalseを返します。
具体的には、eql?メソッドは以下の条件をすべて満たす場合にハッシュが等しいと判断します。第一に、両方のハッシュが同じ数のキーと値のペアを持っている必要があります。第二に、一方のハッシュに含まれるすべてのキーが、他方のハッシュにも存在しなければなりません。そして第三に、それぞれのキーに対応する値もすべて等しい必要があります。
ここで重要なのは、ハッシュのキーおよび値の比較において、各オブジェクトの==演算子ではなく、eql?メソッドが内部的に使用される点です。eql?メソッドは、オブジェクトが持つ値だけでなく、その型も考慮して厳密な同一性を判定します。例えば、整数1と浮動小数点数1.0は、==演算子では等しいと見なされますが、eql?メソッドでは異なるオブジェクトとして扱われます。そのため、Hash#eql?は、キーや値の型まで含めて完全に一致しているかを検証する際に利用され、より厳密なハッシュの比較が必要な場面で役立ちます。
構文(syntax)
1hash_a = { key1: 'value1', key2: 'value2' } 2hash_b = { key1: 'value1', key2: 'value2' } 3hash_a.eql?(hash_b)
引数(parameters)
other
- other: 比較対象のハッシュオブジェクト
戻り値(return)
Boolean
2つのハッシュがキーと値の両方で完全に一致する場合に真 (true) を返します。そうでなければ偽 (false) を返します。