Assoziative Arrays

D besitzt integrierte Assoziative Arrays (auch als Hashtabelle oder Hashmap bekannt). Ein Assoziatives Array mit ein Schlüssel des Typs string und einem Wert des Typs int wird folgendermaßen erzeugt:

int[string] arr;

Der Wert kann über den Schlüssel erreicht und gesetzt werden:

arr["key1"] = 10;

Um zu testen, ob ein Schlüssel in dem Assoziativen Array enthalten ist, kann der in-Ausdruck genutzt werden:

if ("key1" in arr)
    writeln("Yes");

Der in-Ausdruck gibt einen Zeiger auf den Wert zurück, falls er gefunden wurde, anderenfalls einen null-Zeiger. Also können Existenz-Test und Schreiben komfortabel kombiniert werden:

if (auto val = "key1" in arr)
    *val = 20;

Zugriff auf einen nicht existierenden Schlüssel führt zu einem RangeError und dem sofortigen Abbruch der Anwendung. Für sicheren Zugriff mit einen Standardwert (engl: default value) gibt es get(key, defaultValue).

Assoziativery Arrays bieten neben der .length-Eigenschaft herkömmlicher Arrays auch .remove(val), um Einträge über ihren Schlüssel zu entfernen. Dem Leser wird als Übung empfohlen, die speziellen .byKey- und .byValue-Ranges zu erforschen.

Weiterführende Quellen

rdmd playground.d