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