Tableaux associatifs

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 inretournent 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.

Pour aller plus loin

rdmd playground.d