Arrays asociativos

Los arrays asociativos de D están incluidos en el propio lenguaje. Estos arrays asociativos también son conocidos como hash maps. Un array asociativo con una clave de tipo cadena de caracteres (string) y con valores de tipo entero (int) se declara de la siguiente forma:

int[string] arr;

A los valores se accede mediante su clave, con lo que pueden ser modificados:

arr["key1"] = 10;

Para comprobar si una clave existe dentro del array asociativo se usa la expresión in:

if ("key1" in arr)
    writeln("Sí");

La expresión in devuelve un puntero al valor referenciado por la clave indicada, o null en caso de que no exista la clave dada. Gracias a esto, la comprobación de existencia de claves y la asignación se pueden combinar según convenga:

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

Intentar acceder a una clave que no existe en el array asociativo lanza un error de tipo RangeError que aborta inmediatamente la aplicación. Se puede usar la función get(key, defaultValue) para acceder de forma segura a los arrays asociativos dando un valor predeterminado.

Los arrays asociativos (conocidos con la abreviatura AA) tienen la propiedad .length igual que los arrays normales. Además también tienen el método .remove(val) para borrar elementos dada su clave. Se deja como ejercicio para el lector explorar los rangos especiales .byKey y .byValue.

En profundidad

rdmd playground.d