Duplicate keys in a Hash


#1

In the code below it appears Ruby is permitting duplicate keys. What’s
happening?
–Brian

h = {}
h[{}] = “test1” #key is an empty hash
h[{}] = “test2” #2nd key is an empty hash – two duplicate keys?
h.size # 2

{} == {} # => true empty hashes are equal


#2

On Thu, 2006-03-23 at 05:56 +0900, Brian B. wrote:

In the code below it appears Ruby is permitting duplicate keys. What’s
happening?
–Brian

h = {}
h[{}] = “test1” #key is an empty hash
h[{}] = “test2” #2nd key is an empty hash – two duplicate keys?
h.size # 2

{} == {} # => true empty hashes are equal

{}.eql? {}

=> false

{}.hash == {}.hash

=> false

I don’t think Hash uses == at all.


#3

On Mar 22, 2006, at 3:56 PM, Brian B. wrote:

{} == {} # => true empty hashes are equal
The two empty hashes are equal, but they’re not the same empty hash,
if that makes sense. Try this:

irb(main):013:0> {}.object_id == {}.object_id
=> false

I hope this answers your question!

Cheers,
Eric