clear rubyish solution, Robert.
thanks again for generous help.
i am still hoping for the plain f[w] += 1 though
for the record, i played w the ff
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
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
>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.