----- Original Message ----- From: "David A. Black" <dblack / wobblini.net> To: <ruby-core / ruby-lang.org> Sent: Tuesday, December 21, 2004 1:34 PM Subject: Re: Hash#delete - inconsistent with docs > 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 > AFAICS, this was changed 3 years ago in rev1.58 ... http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/hash.c#rev1.58 DIFF (around lines 395/414) http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/hash.c.diff?r1=1.57;r2=1.58;f=h I posted on c.l.ruby in Feb 2003 but the message didn't go to ruby-talk ... http://groups-beta.google.com/group/comp.lang.ruby/browse_thread/thread/6a80fe2c76647f34 I added a short prompt on the Wiki for PragDave, here ... http://www.rubygarden.org/ruby?ProgrammingRubyTwo/Hash daz ____________________________________________________________________________ This email and all attachments have been electronically scanned by Kingston Communications' email Anti-Virus service and no known viruses were detected. ____________________________________________________________________________