【Ruby3.x】BasicObject::equal?()メソッドの使い方
equal?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
equal?メソッドは、二つのオブジェクトがメモリ上で全く同じオブジェクトであるかどうかを判定するメソッドです。このメソッドは、オブジェクトの識別子(オブジェクトID)が一致するかどうかを確認します。つまり、異なる変数であっても、それらが全く同じインスタンスを指している場合にのみtrueを返します。
Rubyには、オブジェクトの等価性をチェックするためのメソッドがいくつか存在しますが、equal?はその中でも最も厳密なチェックを行います。一般的に用いられる==(等価演算子)メソッドは、オブジェクトが持つ「値」が同じであるかどうかを判定するために、各クラスで独自に定義(オーバーライド)されることが多く、たとえ異なるオブジェクトであっても値が同じであればtrueを返すことがあります。しかし、equal?メソッドは、値の等しさではなく、オブジェクトそのものがメモリ上の同じ場所にある、つまり全く同じインスタンスであるかどうかにのみ着目します。
このため、equal?メソッドは、オブジェクトの物理的な同一性が非常に重要となる場面で利用されます。例えば、プログラム内で特定のオブジェクトが唯一のインスタンス(シングルトン)であるかを確認したい場合や、厳密なオブジェクト同一性保証が必要なロジックにおいて役立ちます。このメソッドは、Rubyの全てのオブジェクトの基底クラスであるBasicObjectに定義されているため、どのオブジェクトに対しても使用可能です。
構文(syntax)
1obj1 = "Ruby" 2obj2 = obj1 3obj3 = "Ruby" 4 5obj1.equal?(obj2) # => true 6obj1.equal?(obj3) # => false
引数(parameters)
other
- other: 比較対象となるオブジェクト
戻り値(return)
true or false
二つのオブジェクトがメモリ上で全く同じインスタンスである場合に真(true)、そうでない場合に偽(false)を返します。