Is there an "official" way to get from the value returned by "hash" to the Fixnum that's actually used for hashing?  Or is this considered to be implementation-dependent?

A few small experiments:

irb(main):001:0> class C
irb(main):002:1> def hash; "abc"; end
irb(main):003:1> end
=> nil
irb(main):004:0> a = {}
=> {}
irb(main):005:0> a[C.new] = nil
=> nil
irb(main):006:0> class D
irb(main):007:1> def hash; self; end
irb(main):008:1> end
=> nil
irb(main):009:0> a[D.new] = nil
NoMethodError: undefined method `%' for #<D:0x7c53454>
        from (irb):9:in `[]='
        from (irb):9
        from :0
irb(main):010:0> class D
irb(main):011:1> def % *args; self; end
irb(main):012:1> end
=> nil
irb(main):013:0> a[D.new] = nil
=> nil
irb(main):014:0>

Thanks,
-Curt

--
Curt Hagenlocher
curth / microsoft.com