クラスとオブジェクト
オブジェクトの比較
Ruby には == / eql? / equal? / <=> という異なる比較メソッドがあります。 それぞれが何を比較するのかを理解することが重要です。
比較メソッドの違い
==値が等しいか(意味的な等価性)。サブクラスでオーバーライドして定義する。eql?== と同様だが Hash のキー比較に使われる。型も一致する必要がある。equal?同一オブジェクトか(object_id が等しいか)。オーバーライドすべきでない。<=>大小比較。-1/0/1 または nil を返す。Comparable で活用される。Rubyエディタ
カスタムクラスでの == の実装
独自クラスでは == をオーバーライドして値ベースの等価性を定義します。 eql? と hash もセットで実装するのがベストプラクティスです。
Rubyエディタ