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.