Menu

Ассоциативные массивы

В языке D есть встроенные ассоциативные массивы, также известные как хэш-таблицы. Ассоциативный массив с ключом типа string и значением типа int объявляется так:

int[string] arr;

Доступ к значению можно получить по его ключу и установить таким образом:

arr["key1"] = 10;

Чтобы проверить, существует ли ключ в ассоциативном массиве, можно использовать выражение in:

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

Выражение in возвращает указатель на значение, если ключ может быть найден, либо null в противном случае. Такую проверку существования и запись значения можно легко объединить:

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

Доступ к несуществующему ключу приведёт к ошибке RangeError, что немедленно прервёт выполнение приложения. Для безопасного доступа с заданными по умолчанию значениями можно использовать get(key, defaultValue).

У ассоциативных массивов, как и у обычных массивов, есть свойство .length, а также метод .remove(val) для удаления записи по её ключу. В качестве упражнения читателю предлагается самостоятельно исследовать специальные диапазоны .byKeys и .byValues.

Подробнее

rdmd playground.d