On Tuesday, September 10, 2013 8:27:13 AM UTC+1, tamouse wrote:
>
> > I do know that Hash don't allow duplicate keys. But I would like to by 
> > which method hash check if any duplicate key present into it or not? As 
> > I can see "foo" have different `object_id`,which is expected. But in 
> > case of Hash key how this two different objects "foo" is treated as same 
> > object? 
>
> The hash's keys' object id's are not what is compared. If you take both of 
> those strings, and did this: 
>
> "foo" == "foo" 
>
> You'd get true, regardless of the fact they have different object ids. 
>
> You are making this way way way more complicated than it is. 
>
>  
By default  yes, eql? is used for hash keys (and eql? in turn generally 
calls ==).

You can ask for a hash to use object identity though:

h = {}.compare_by_identity => {} 
h['a'] = 1 # => 1 
h['a'] = 2 # => 2 
h # => {"a"=>1, "a"=>2} 

Although it's not something I've ever needed or seen in the wild.

Fred

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/e48dbc9e-6647-4820-a505-6141721e9a73%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to