Associative Arrays

D has built-in associative arrays also known as hash maps. An associative array with a key type of string and a value type of int is declared as follows:

int[string] arr;

The value can be accessed by its key and thus be set:

arr["key1"] = 10;

To test whether a key is located in the associative array, the in expression can be used:

if ("key1" in arr)
    writeln("Yes");

The in expression returns a pointer to the value if it can be found or a null pointer otherwise. Thus existence check and writes can be conveniently combined:

if (auto val = "key1" in arr)
    *val = 20;

Access to a key which doesn't exist yields a RangeError that immediately aborts the application. For safe access with a default value, get(key, defaultValue) can be used.

AA's have the .length property like arrays and provide a .remove(key) member to remove entries by their key. It is left as an exercise to the reader to explore the special .byKey and .byValue ranges.

In-depth

rdmd playground.d