【Ruby3.x】UnboundMethod::eql?()メソッドの使い方
eql?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
eql?メソッドは、呼び出し元となるUnboundMethodオブジェクトと、引数として渡された別のオブジェクトが等しいかどうかを厳密に比較するメソッドです。UnboundMethodオブジェクトは、特定のレシーバオブジェクトにまだ束縛されていない、メソッドの定義そのものを表すオブジェクトです。
このeql?メソッドは、二つのUnboundMethodオブジェクトが以下の条件をすべて満たす場合にtrueを返します。一つは、それらが同じクラスまたはモジュールに定義されたメソッドであることです。もう一つは、両者が同じメソッド名を持つこと、そしてさらに、同じソースファイル内の同じ行番号で定義されていることです。これらの条件が完全に一致する場合にのみ、二つのUnboundMethodオブジェクトはeql?であると判断されます。
通常の等価比較を行う==メソッドと比較して、eql?メソッドはより厳密な同値性を判定する際に用いられます。特に、ハッシュのキーとしてUnboundMethodオブジェクトを使用する際に、正確なキーの比較と検索を行うために、この厳密な同値性判定が重要となります。比較対象がUnboundMethodオブジェクトでない場合は、常にfalseを返します。
構文(syntax)
1unbound_method_a = String.instance_method(:length) 2unbound_method_b = String.instance_method(:length) 3unbound_method_a.eql?(unbound_method_b)
引数(parameters)
other
- other: 比較対象の
UnboundMethodオブジェクト
戻り値(return)
true または false
指定されたUnboundMethodオブジェクトが、もう一方のオブジェクトとメソッド定義が等しい場合に true を、そうでない場合に false を返します。