【Ruby3.x】UnboundMethod::==()メソッドの使い方
==メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
==メソッドは、2つのUnboundMethodオブジェクトが同じメソッドを表しているか比較を実行するメソッドです。UnboundMethodとは、まだ特定のオブジェクトにバインドされていない、クラスに定義されたメソッドそのものを表すオブジェクトです。例えば、Stringクラスのsizeメソッドのように、クラスに定義されているメソッドそのものを、特定のインスタンスに依存せず参照したい場合に使用されます。
この==メソッドは、比較対象となる2つのUnboundMethodオブジェクトが、実質的に同一のメソッドであるかどうかを判定するために利用されます。具体的には、比較対象のメソッドが以下のすべての条件を満たす場合にのみtrueを返します。
- メソッドが定義されている元のクラスが同じであること。
- メソッドの名前が同じであること。
- メソッドの実装(コードブロック)が物理的に同一であること。
これらの条件のいずれか一つでも異なる場合、==メソッドはfalseを返します。この比較は、プログラム内で動的に取得したメソッドが、期待している特定のメソッドと一致するかどうかを確認する際や、異なる方法で取得されたメソッドが同じ実体を持つかを検証する場面で役立ちます。メソッドの同一性を厳密に確認したい場合に活用できる重要な比較演算子です。
構文(syntax)
1class MyClass 2 def my_method 3 end 4end 5 6m1 = MyClass.instance_method(:my_method) 7m2 = MyClass.instance_method(:my_method) 8m1 == m2
引数(parameters)
other
- other: 比較対象の
UnboundMethodオブジェクト
戻り値(return)
Boolean
二つの UnboundMethod オブジェクトが、同じメソッド定義を参照している場合に true を返します。それ以外の場合は false を返します。