Ruby hash autovivification (facetas)

Aquí hay un truco inteligente para habilitar la autovivificación de hash en ruby ​​(tomado de facetas):

  # File lib/core/facets/hash/autonew.rb, line 19
  def self.autonew(*args)
    leet = lambda { |hsh, key| hsh[key] = new( &leet ) }
    new(*args,&leet)
  end

Aunque funciona (por supuesto), me resulta realmente frustrante no poder entender cómo este dos liner hace lo que hace.

leet se pone como un valor por defecto. Así que entonces solo accediendoh['new_key'] de alguna manera lo trae y crea'new_key' => {}

Ahora me esperabah['new_key'] devolviendo el objeto de valor predeterminado en lugar de evaluarlo. Es decir,'new_key' => {} no se crea automáticamente. Entonces, ¿cómo se llama realmente a Leet? Especialmente con dos parámetros?

Respuestas a la pregunta(3)

Su respuesta a la pregunta