¿Cómo manejar la combinación [] + = para el hash auto-vivificante en Ruby?

Para implementar la auto-vivificación de Ruby hash, se puede emplear la siguiente clase

class AutoHash < Hash
  def initialize(*args)
    super()
    @update, @update_index = args[0][:update], args[0][:update_key] unless 
args.empty?
  end

  def [](k)
    if self.has_key?k
      super(k)
    else
      AutoHash.new(:update => self, :update_key => k)
    end
  end

  def []=(k, v)
    @update[@update_index] = self if @update and @update_index
    super
  end

  def few(n=0)
    Array.new(n) { AutoHash.new }
  end
end

Esta clase permite hacer las siguientes cosas

a = AutoHash.new
a[:a][:b] = 1
p a[:c] # => {}             # key :c has not been created
p a     # => {:a=>{:b=>1}}  # note, that it does not have key :c

a,b,c = AutoHash.new.few 3
b[:d] = 1
p [a,b,c] # => [{}, {:d=>1}, {}]  # hashes are independent

Ahi estadefinición un poco más avanzada de esta clasepropuesto por Joshua, lo cual es un poco difícil de entender para mí.

Problema

Hay una situación en la que creo que la nueva clase se puede mejorar. El siguiente código falla con el mensaje de errorNoMethodError: undefined method '+' for {}:AutoHash

a = AutoHash.new
5.times { a[:sum] += 10 }

¿Qué harías para manejarlo? ¿Se puede definir[]+= ¿operador?

Preguntas relacionadas

¿Es posible la inicialización automática de la matriz hash multidimensional en Ruby, como lo es en PHP?Inicialización múltiple de hash auto-vivificantes usando un nuevo operador en Ruby ruby hash initialization rSigue abierto: ¿Cómo crear un operador para copia profunda / clonación de objetos en Ruby?

Respuestas a la pregunta(3)

Su respuesta a la pregunta