D comprend nativement des tableaux associatifs, aussi connus sous le nom de tableaux de hachage. Un tableau associatif avec des clés de type string
et des valeurs de type int
est déclaré comme ceci:
int[string] tab;
On peut alors accéder à une valeur par sa clé, et donc la modifier:
tab["clé1"] = 10;
Pour tester si une clé existe dans un tableau associatif, l'expression in
peut être utilisée:
if("clé1" in tab)
writeln("Oui");
Les expressions in
retournent un pointeur vers la valeur si elle peut être trouvée, et un pointeur null
sinon. Le test d'existance et la modification de la valeur peuvent donc être combinés:
if (auto val = "clé1" in tab)
*val = 20
Accéder à une clé qui n'existe pas provoque une RangeError
qui termine immédiatement l'exécution de l'application. Pour un accès sur avec une valeur par défaut, get(cle, valeurDefaut)
peut être utilisé.
Les tableaux associatifs ont une propriété .length
comme les tableaux et fournissent une méthode .remove(cle)
pour supprimer des éléments en précisant leur clé.
Il est laissé comme exercice au lecteur d'explorer les deux ranges particulières .byKey
et byValue
.