【Ruby3.x】Method::==()メソッドの使い方
==メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
==メソッドは、Methodクラスのインスタンスである二つのメソッドオブジェクトが、まったく同じメソッドを参照しているかを比較するメソッドです。Rubyでは、プログラム内で定義されたメソッド自体もオブジェクトとして扱うことができ、そのメソッドを表すのがMethodクラスのインスタンス、すなわちメソッドオブジェクトです。この==メソッドは、単にメソッドの名前が同じであるかを見るだけでなく、そのメソッドがどのオブジェクトに属し、どのクラスで定義された、まさに「そのもの」であるかを厳密に比較します。
具体的には、二つのメソッドオブジェクトが比較された際に、それらが同じレシーバ(メソッドが呼び出される対象のオブジェクト)、同じ所属クラス、そして同じメソッド名を持つ場合のみ、等しいと判断されtrueを返します。したがって、たとえ同じ名前を持つメソッドであっても、それが異なるオブジェクトから取得されたものであれば、それぞれは別のMethodオブジェクトとして扱われるため、==メソッドはfalseを返します。
この機能は、プログラムの実行中に特定のメソッドが意図した通りに一意に識別されているかを確認したい場合や、メソッドの集合から重複を排除したい場合など、メソッドの厳密な同一性を保証する必要がある場面で非常に有用です。システムエンジニアを目指す初心者の方は、メソッドを単なるコードの塊としてではなく、操作できるオブジェクトとして捉えるRubyの考え方を理解する上で、この==メソッドの振る舞いが参考になるでしょう。
構文(syntax)
1class ExampleClass 2 def example_method 3 end 4end 5 6obj = ExampleClass.new 7method_obj1 = obj.method(:example_method) 8method_obj2 = obj.method(:example_method) 9 10method_obj1 == method_obj2
引数(parameters)
req
- other: Method: 比較対象のメソッドオブジェクト
戻り値(return)
Boolean
2つのMethodオブジェクトが同じメソッドを参照している場合にtrueを返します。それ以外の場合はfalseを返します。