Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
==ルビークラスに実装したい。できます
==
def ==(o) o.respond_to?(:id) && self.id == o.id end
また
def ==(o) o.is_a?(Foo) && self.id == o.id end
この記事によると、前者の方が理にかなっているようです。私が実装している場合eql?は、後者を実行します。これは正しいです?
eql?
任意のオブジェクトと比較するのか、特定のタイプのオブジェクトと比較するのかによって異なります。2番目の形式は特定のものであり、最初のジェネリックです。
あなたの場合、あなたはおそらく特定のフォームで大丈夫です。一般的な比較は、比較しているオブジェクトが一致するものとして変換または解釈できる場合にのみ関係します。使用idはあまりにもオープンエンドのようです。これは、Foo10とBar10が完全に異なるソースから取得される可能性がある場合、それらが同等であることを意味します。
id