Ruby Hash Autovivification (Facetten)

Hier ist ein cleverer Trick, um die Hash-Autovivifizierung in Ruby (aus Facetten) zu aktivieren:

  # 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

Obwohl es (natürlich) funktioniert, finde ich es wirklich frustrierend, dass ich nicht herausfinden kann, wie diese beiden Liner das tun, was sie tun.

leet ist voreingestellt. Damit greift man dann einfach zuh['new_key'] irgendwie bringt es auf und schafft'new_key' => {}

Nun würde ich erwartenh['new_key'] Rückgabe des Standardwertobjekts im Gegensatz zu dessen Auswertung. Das ist,'new_key' => {} wird nicht automatisch erstellt. Wie wird leet eigentlich gerufen? Vor allem mit zwei Parametern?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage