Das Erstellen von Hashes von Hashes in Ruby ermöglicht bequeme zwei (oder mehr) dimensionale Lookups. Beim Einfügen muss jedoch immer geprüft werden, ob der erste Index bereits im Hash existiert. Zum Beispiel:Hashes of Hashes Idiom in Ruby?
h = Hash.new
h['x'] = Hash.new if not h.key?('x')
h['x']['y'] = value_to_insert
Es wäre besser, die folgend, wo der neue Hash zu tun automatisch erstellt wird:
h = Hash.new
h['x']['y'] = value_to_insert
ähnlich, wenn die Suche nach einem Wert, wo der erste Index nicht bereits vorhanden ist, Es wäre vorzuziehen, wenn nil zurückgegeben wird, anstatt eine undefinierte Methode für den Fehler '[]' zu erhalten.
looked_up_value = h['w']['z']
Man könnte eine Hash-Wrapper-Klasse erstellen, die dieses Verhalten hat, aber gibt es ein bestehendes Ruby Idiom diese Aufgabe für die Erfüllung?
Gibt es einen Hash von Hash-Idiomen, die nach einer bestimmten Tiefe 0 zurückgeben würden? (Ich zähle Dinge und ich benutze h [: foo] [: bar] [: baz] + = 1) –