🖥

#Ruby で自前クラスのインスタンス同士で同値性チェックを実装するには == ===イコールメソッドを定義すれば良いかね?

2020/03/10に公開
  • 強制的に同値の評価を真にしてしまう場合。別のクラスのインスタンスだろうとなんだろうと常に「同値だ!」と言い張るクラスを作ってみる。実用的には特に意味なし。
  • Aのインスタンスが同値評価をしようとすると、常に true を返す。(特に意味はありません)
  • 有意な同値評価を実装してみてください。
class A
  def ==(instance)
    true
  end

  def ===(instance)
    true
  end
end

class B
end



A.new == B.new
# => true

A.new === B.new
# => true

B.new == A.new
# => false

B.new === A.new
# => false

== と === だけ再定義可能みたいだ

Rubyにおける==,===,eql?,equal?の違い - ぬいぐるみライフ?

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/3014

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2020-03-10

Discussion