Hi -- On Tue, 21 Dec 2004, Charles Mills wrote: > irb(main):001:0> h = Hash.new("go fish") > => {} > irb(main):002:0> h.delete("foo") > => nil > > $ ri Hash#delete > ------------------------------------------------------------ Hash#delete > hsh.delete(key) => value > hsh.delete(key) {| key | block } => value > ------------------------------------------------------------------------ > Deletes and returns a key-value pair from hsh whose key is equal > to key. If the key is not found, returns the default value. If the > optional code block is given and the key is not found, pass in the > key and return the result of block. > > h = { "a" => 100, "b" => 200 } > h.delete("a") #=> 100 > h.delete("z") #=> nil > h.delete("z") { |el| "#{el} not found" } #=> "z not found" > > > I expected >> h.delete("foo") #=> "go fish" > or for the docs to say 'If the key is not found, returns nil'. That behavior seems to have changed since 1.6.8: ruby -ve 'h=Hash.new("x"); h[1]=2; p h.delete("y"); p h.delete(1)' ruby 1.6.8 (2002-12-24) [i686-linux] "x" 2 though I can't find it mentioned in the ChangeLog. (Maybe that's why the doc wasn't updated.) David -- David A. Black dblack / wobblini.net