This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.

Using an Array or Other Modifiable Object as a Hash Key
CodeExpectedActual
coordinates = [10, 5]
treasure_map = { coordinates => 'jewels' }
treasure_map[coordinates]
"jewels" "jewels"
coordinates << -5
coordinates
[10, 5, -5] [10, 5, -5]
treasure_map[coordinates]
nil nil
treasure_map.rehash
treasure_map[coordinates]
"jewels" "jewels"
module ReliablyHashable
  def hash
    return object_id
  end
end
class ReliablyHashableArray < Array
  include ReliablyHashable
end
coordinates = ReliablyHashableArray.new([10,5])
treasure_map = { coordinates => 'jewels' }
treasure_map[coordinates]
"jewels" "jewels"
coordinates.push(-5)
treasure_map[coordinates]
"jewels" "jewels"
a = [1,2]
b = a.clone
a.hash
11 11
b.hash
11 11
a  = ReliablyHashableArray.new([1,2])
b = a.clone
a.hash
-606031406 -606028286
b.hash
-606034266 -606031146