Array Associativi

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.

Approfondimenti

rdmd playground.d