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"}