From: Robert Klemme Date: 2006-02-23T19:53:42+09:00 Subject: Re: setting nil to zero Botp wrote: > Robert Klemme [mailto:bob.news@gmx.net] : > > #f[w] = (f[w] || 0) + 1 > > clear rubyish solution, Robert. > thanks again for generous help. > > i am still hoping for the plain f[w] += 1 though :) As mentioned already you can do that, if it's a Hash: >> f=Hash.new 0 => {} >> f[:foo]+=1 => 1 >> f => {:foo=>1} > for the record, i played w the ff > > ruby>cat test.rb > > class NilClass > def method_missing(methId, *args) > str = methId.id2name > if str == "+" and args[1].nil? > #str is "+" > #args[1] is nil > #args[0] is rhs value > return args[0] > end > end > end Why so complicated? Why not just class NilClass def +(n) n end end >> h={} => {} >> h[:foo]+=1 => 1 >> h => {:foo=>1} Note, I recommend to use the veriant with 0 as default value for Hash lookups because that avoids tampering with standard classes. Cheers robert