From: matt@... (matt neuburg) Date: 2008-05-09T11:25:03+09:00 Subject: Re: How to re-replace Hash default value behaviour? Siep Korteling wrote: > Hash.new(0) and the block form of Hash.new{_smart_stuff_} come in > really handy while reading in a hash. > When the reading is done however, my hash serves to provide data. At > that stage, the default_value behaviour gets in the way. For instance, > if the hash contains the number of goals for soccerplayers, I don't want > the hash to return value "0" for the key "Wolfgang Amadeus Mozart"; by > then I want plain old Nil, or "No data available". > > failed experiment: > > Class Hash > def default_proc > Nil > end > end > > How can Hash.new behaviour be changed? > > regards, > Siep h = Hash.new.merge(h) So for example: h = Hash.new(0) h[:a] += 2 h[:a] += 1 h[:b] += 4 p h #=> {:a=>3, :b=>4} h = Hash.new.merge(h) p h[:c] #=> nil, it's now returning plain old nil m. -- matt neuburg, phd = matt@tidbits.com, http://www.tidbits.com/matt/ Leopard - http://www.takecontrolbooks.com/leopard-customizing.html AppleScript - http://www.amazon.com/gp/product/0596102119 Read TidBITS! It's free and smart. http://www.tidbits.com