[#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:01113] Re: Infinite loop

From: ts <decoux@...>
Date: 2000-01-12 06:04:16 UTC
List: ruby-talk #1113
>>>>> "Y" == Yukihiro Matsumoto <matz@netlab.co.jp> writes:

Y> Hmm, the only requirement for `hash' method is

Y>   * a.hash == b.hash where a.eql?(b) is true.

 I've not understood, sorry. Do you mean 

 1) if a.eql?(b) then a.hash == b.hash

 or

 2) if a.hash == b.hash then a.eql?(b) is true

Y> So I guess your expectation may be too much.

Y> BTW, My second option was broken for arrays with string elements.
Y> How about like below?

Y>          def hash
Y>            h = self.id
Y>            for item in self
Y>              if item.kind_of? Array
Y>                h ^= item.id
Y>              else
Y>                h ^= item.hash
Y>              end
Y>            end
Y>            h
Y>          end

 This don't work for the first case with [1, 2, [1, 2]] and [1, 2, [1, 2]]

 a.hash != b.hash and a.eql?(b) is true

p.s. : I've not understood the interest to have a recursive array.


Guy Decoux

In This Thread