[#1491] bug — Mathieu Bouchard <matju@...>
6 messages
2003/09/01
[#1492] non-blocking mode behavior (Re: bug)
— nobu.nokada@...
2003/09/01
Hi,
[#1512] New tests — Dave Thomas <Dave@...>
I was looking through the new test/ruby/* stuff just now, and notices
6 messages
2003/09/05
[#1533] GC disable / enable question — Torsten Rueger <torsten.rueger@...>
Moi,
7 messages
2003/09/17
[#1534] Re: GC disable / enable question
— nobu.nokada@...
2003/09/17
Hi,
[#1541] How to debug ? — Torsten Rueger <torsten.rueger@...>
Moi,
6 messages
2003/09/19
[#1542] Re: How to debug ?
— ts <decoux@...>
2003/09/19
>>>>> "T" == Torsten Rueger <torsten.rueger@hiit.fi> writes:
[#1551] Hashes as keys — "Nathaniel Talbott" <nathaniel@...>
I was just playing around with Hash#hash and discovered that you can't use a
13 messages
2003/09/23
[#1552] Re: Hashes as keys
— Jim Freeze <jim@...>
2003/09/23
On Wednesday, 24 September 2003 at 6:21:33 +0900, Nathaniel Talbott wrote:
[#1556] ostruct.rb patch — "Nathaniel Talbott" <nathaniel@...>
I've been finding OpenStruct to be very useful lately, and then I discovered
9 messages
2003/09/24
[#1557] Re: ostruct.rb patch
— "NAKAMURA, Hiroshi" <nahi@...>
2003/09/24
Hi, Nathaniel,
Re: Hashes as keys
From:
Eugene Scripnik <Eugene.Scripnik@...>
Date:
2003-09-24 07:32:50 UTC
List:
ruby-core #1563
Nathaniel Talbott wrote:
> I was just playing around with Hash#hash and discovered that you can't use a
> Hash as a key in a hash:
>
> h = {{} => 'a'}
> p h[{}]
>
> => nil
>
> Is this intentional? Since hash overrides #==, I expected it to do the same
> with #hash, but it appears that it just uses Object#hash, which is different
> for every instance.
Implement #hash and #eql? methods in the way you think they should work
and you'll get expected results:
$ cat myhash.rb
class MyHash < Hash
def hash
current = 17
self.each do |k, v|
current = current * 37 + k.hash
current = current * 37 + v.hash
end
return current
end
def eql?( h )
return false if self.keys.length != h.keys.length
h.each do |k, v|
return false unless self.has_key?( k ) and self[k] == v
end
return true
end
end
h = {}
h1 = MyHash.new
h1[:key] = 'value'
h2 = MyHash.new
h2[:key] = 'value'
h[h1] = 'a'
puts h[h2]
--
Eugene Scripnik
IT Group
Software Architect
Tel./Fax +380 (372) 58-43-10
email: Eugene.Scripnik@itgrp.net
http://www.itgrp.net/