Hi,
In message "[ruby-talk:01092] Re: Infinite loop"
on 00/01/11, Clemens Hintze <clemens.hintze / alcatel.de> writes:
|> Exactly - it just seems inconsistent, but as I mentioned originally, I
|> don't think it's necessarily a bug ;-)
|
|But here we differ in opinion! In my eyes, this *is* necessarily a
|bug!
I agree. This is a bug.
Here's two option to solve this. Which do you prefer?
(a) like Array#inspect, Array#hash can use rb_protect_inspect() and
rb_inspecting_p() to detect cycles.
(b) change the behavior of Array#hash not to traverse items
recursively. e.g.
def hash
h = self.id
for item in self
h ^= item.id
end
h
end
Both are real eacy to implement. I prefer latter.
matz.