Hash
檢查它的鍵:eql?覆蓋不哈希與<code>eql?</code>工作
foo = 'str'
bar = 'str'
foo.equal?(bar) #=> false
foo.eql?(bar) #=> true
h = { foo => 1 }
h[foo] #=> 1
h[bar] #=> 1
但是,如果我用我自己的類作爲重點,這並不工作:
class Cl
attr_reader :a
def initialize(a)
@a = a
end
def eql?(obj)
@a == obj.a
end
end
foo = Cl.new(10)
bar = Cl.new(10)
foo.equal?(bar) #=> false
foo.eql?(bar) #=> true
h = { foo => 1 }
h[foo] #=> 1
h[bar] #=> nil
爲什麼最後線返回nil
而不是1
?
'puts'總是返回'nil'。 –
@ sagarpandya82我認爲你不明白這一點。 – sawa
@BиталийПапроцький如果你小心地說出了這個問題本身就很好。如果您閱讀這裏的評論並正確地設置您的問題,downvote可能變成upvote。 – sawa