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.