O D tem arrays associativos incorporados, também conhecidos como mapas de hash.
Um array associativo com um tipo de chave string
e um tipo de valor
de int
é declarado da seguinte forma:
int[string] arr;
O valor pode ser acessado por sua chave e, assim, ser definido:
arr["key1"] = 10;
Para testar se uma chave está localizada no array associativo, a expressão
expressão in
pode ser usada:
if ("key1" in arr)
writeln("Yes");
A expressão in
retorna um ponteiro para o valor se ele
puder ser encontrado ou um ponteiro null
caso contrário. Assim, a verificação de existência
e gravações podem ser convenientemente combinadas:
if (auto val = "key1" in arr)
*val = 20;
O acesso a uma chave que não existe gera um RangeError
que interrompe imediatamente o aplicativo. Para acesso seguro
com um valor padrão, get(key, defaultValue)
pode ser usado.
Os AAs têm a propriedade .length
como os arrays e fornecem
um membro .remove(key)
para remover entradas por sua chave.
Deixamos como exercício para o leitor explorar
os intervalos especiais .byKey
e .byValue
.