D має вбудованi асоціативні масиви, також відомi як HashMap-и.
Асоціативний масив з ключем типу string
і типом значення
int
оголошується наступним чином:
int[string] arr;
За допомогою ключа можна як отримати значення, так i встановити його:
arr["key1"] = 10;
Щоб перевірити, чи розташований ключ в асоціативному масиві, може
бути використан вираз in
:
if ("key1" in arr)
writeln("Yes");
Вираз in
повертає вказівник на значення, якщо його можна знайти,
або null
в іншому випадку. Таким чином, перевірка на існування
і запис можуть бути легко об'єднані:
if (auto val = "key1" in arr)
*val = 20;
Доступ до ключу, який не існує дає помилку RangeError
, яка негайно
припиняє виконання програми. Для безпечного доступу зі значенням за
замовчуванням може бути використано вираз get(key, ЗначенняЗаЗамовчуванням)
.
Асоциативнi масиви, як i звичайнi, мають властивість .length
, а також
властивicть .remove(val)
, що видаляє запис по ключу. В якості вправи
читачу залишається дослідження спеціальних діапазонів .byKey
і .byValue
.