D dispone nativamente di array associativi, conosciuti anche come hashmap.
Un array associativo con chiavi di tipo string e valori di tipo int
si dichiara in questo modo:
int[string] arr;
I valori possono essere inseriti e acceduti utilizzando la loro chiave:
arr["key1"] = 10;
Per verificare la presenza di una chiave nell'array associativo, è possibile
utilizzare l'operatore in:
if ("key1" in arr)
writeln("Yes");
L'operatore in restituisce un puntatore al valore se questo esiste,
altrimenti restituisce un puntatore null. Questo permette di combinare
in modo elegante il controllo dell'esistenza con l'assegnazione:
if (auto val = "key1" in arr)
*val = 20;
L'accesso a una chiave che non esiste genera un RangeError
che termina immediatamente l'applicazione. Per un accesso sicuro
con un valore predefinito, si può utilizzare get(key, defaultValue).
Gli array associativi hanno la proprietà .length come gli array normali e forniscono
un membro .remove(key) per rimuovere le voci tramite la loro chiave.
È lasciato come esercizio al lettore esplorare
i range speciali .byKey e .byValue.