Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Method::eql?()メソッドの使い方

eql?メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

eql?メソッドは、RubyのMethodオブジェクトが、互いに「等しい」と見なせるかどうかを判定するメソッドです。このメソッドは、2つのMethodオブジェクトを厳密に比較し、その結果を真偽値で返します。

具体的には、eql?メソッドは以下の条件をすべて満たす場合にtrueを返します。一つでも条件が満たされない場合はfalseを返します。 まず、比較対象のオブジェクトが両方ともMethodクラスのインスタンスである必要があります。次に、それらのMethodオブジェクトが参照している基盤となるメソッドが、同じクラスやモジュールで定義された同じ名前のメソッドである必要があります。さらに、それらのMethodオブジェクトが、同じレシーバオブジェクト(メソッドが呼び出される対象のインスタンス)にバインドされている必要があります。

このメソッドは、単にオブジェクトのIDが同じかを見るequal?とは異なり、オブジェクトが持つ意味的な等価性を評価します。例えば、同じコードから生成されたように見える異なるMethodオブジェクトでも、レシーバが異なればeql?falseを返します。

主に、Methodオブジェクトをハッシュのキーとして使用する場合など、正確な等価性判定が必要な場面で利用されます。これにより、ハッシュ内で重複することなくMethodオブジェクトを管理できるようになります。

構文(syntax)

11.eql?(1.0)

引数(parameters)

req

  • obj: 比較対象のオブジェクト

戻り値(return)

true or false

指定されたメソッド eql? は、レシーバであるメソッドオブジェクトと、引数として渡されたオブジェクトが、メソッドの内容、バインディング、そして必要であれば所有者も含めて完全に等しい場合に true を返します。それ以外の場合は false を返します。

関連コンテンツ