Rubyでのハッシュとeqの実装の効果は何ですか[重複]

概要

class A
  def hash
    12
  end

  def ==(other)
    true
  end
end

x = {}
a = A.new
b = A.new
x[a] = "Hello"
x[b] = "World"
puts x

これは印刷中です: {#=>“こんにちは”、#=>“世界”}

交換を期待していましたが、そうではありませんでした。なぜですか?

解決策

http://www.ruby-doc.com/3.3.0/Hash.html#class-Hash-label-Hash+Key+Equivalence

eqlを定義する必要がありますか? == の代わりに:

class A
  def hash
    1
  end

  def eql? other
    true
  end
end

x = {}
a = A.new 
b = A.new

x[a] = "Hello"
x[b] = "World"

p x

#=> {#<A:0x00007fce035af608>=>"World"}