[#1026] Is this a bug? — Dave Thomas <Dave@...>

18 messages 2000/01/03

[#1084] Infinite loop — Dave Thomas <Dave@...>

17 messages 2000/01/11

[#1104] The value of while... — Dave Thomas <Dave@...>

24 messages 2000/01/11

[ruby-talk:01103] Re: Infinite loop

From: Dave Thomas <Dave@...>
Date: 2000-01-11 16:23:08 UTC
List: ruby-talk #1103
Clemens Hintze <clemens.hintze@alcatel.de> writes:

> 
>    a1 = ["hello", 2, "world"]
>    a2 = ["world", 2, "hello"]
>    a1.hash == a2.hash   # Broken!
>    a1.hash
> 417265 
>    a2.hash
> 416997
> 
> With old implementation, it was possible as both calculated hash
> numbers was equal! Furthemore I consider this behavior as inconsistent
> regarding the example you have shown above.

THe reason it's not inconsistent is that Matz seeded the hash with
self.id. In my example, I was careful to reuse the original object, so 
self never changed, and hence the hashes were the same.

I strikes be as dangerous having two arrays that happen to have the
same elements hash to the same value. I could see a lot of bugs
arising if you then used these arrays as keys in a hash:

  salary[['david', 'thomas']] = 10000
  salary[['thomas', 'david']] = 90000

Bad news!

Dave

In This Thread