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
.