我正在尝试创建一个散列,该散列存储一个不存在的键的自动递增数字。我知道还有其他不那么脆弱的方法可以做到这一点;我的问题是:为什么我的实例变量失败得如此惨?
h = Hash.new{|h,k| h[k] = (@max_value += 1)}
h.instance_variable_set(:@max_value, 0) # zero ! Not nil! Argh...
puts h[:a] # expecting 1; getting NoMethodError undefined method '+' for nil:NilClass
puts h[:b] # expecting 2
puts h[:a] # expecting 1