DK wrote: > Hello. I am new to Ruby. I am more familiar with Python, whose hash > keys are immutable, so I was surprised that Ruby's were not. When I > try to retrieve a value from a hash after manipulating the associated > key, it returns nil, even though it admits that the key in the hash > and the key I'm passing into the hash's [] method are the same: > > irb(main):001:0> a=[1,2,3] > => [1, 2, 3] > irb(main):002:0> b={a=>'test'} > => {[1, 2, 3]=>"test"} > irb(main):003:0> b[a] > => "test" > irb(main):004:0> a[0]=7 > => 7 > irb(main):005:0> b[a] > => nil > irb(main):006:0> b.keys[0] == a > => true > irb(main):007:0> b > => {[7, 2, 3]=>"test"} > > # This is doubly weird: > > irb(main):008:0> b[b.keys[0]] > => nil > > I'm sure someone has run into this before, but I was unable to find > anything on it. I am using ruby 1.8.5. > > Thanks, > > DK ri Hash#rehash ------------------------------------------------------------ Hash#rehash hsh.rehash -> hsh ------------------------------------------------------------------------ Rebuilds the hash based on the current hash values for each key. If values of key objects have changed since they were inserted, this method will reindex _hsh_. If +Hash#rehash+ is called while an iterator is traversing the hash, an +IndexError+ will be raised in the iterator. a = [ "a", "b" ] c = [ "c", "d" ] h = { a => 100, c => 300 } h[a] #=> 100 a[0] = "z" h[a] #=> nil h.rehash #=> {["z", "b"]=>100, ["c", "d"]=>300} h[a] #=> 100 -- Posted via http://www.ruby-forum.com/.