Таблицы (хэш-таблицы) - структура
данных,
обеспечивающая доступ к
элементам через ключи.
Например,
?- h := newHash([paul/34, john/25, mary/18]);
true
?- ^h;
{john/25, paul/34, mary/18}
Атому h присваиваем таблицу, ключами
которой служат имена
людей, а
значениями - возраст людей. Таблица создается с помощью встроенной
функции newHash/1,
аргументом
которой является список пар ключ/значение. Значение по ключу можно
получить
с помощью функции hGet
?- hGet(^h, paul);
34
?- hGet(^h, george);
null
Если для данного ключа значение отсутствует (как для
атома george
в нашем примере), то
функция возвращает используемый в таких случаях атом null.
С помощью функции hasKey/2
можно выяснить, содержит ли данная таблица нужный ключ:
?- hasKey(^h, john);
true
?- hasKey(^h, george);
fail
Функции hPut,
hRemove
и hClear
позволяют изменять содержимое таблицы:
?- hRemove(^h, john);
25
?- ^h;
{paul/34, mary/18}
?- hPut(^h, george, 48);
true
?- ^h;
{paul/34, george/48, mary/18}
?- hClear(^h);
{}
Одним из ключевых качеств таблиц во Флэнге является
то, что с их
помощью представляются
атрибуты XML-термов. Определим функцию, задающую информацию о Джоне:
john() :- <person sex="male" age="25">john</person>;
С помощью встроенной функции getXAttrs
можно
получить таблицу атрибутов
XML-терма:
?- getXAttrs(john());
{age/25, sex/"male"}
?- hGet(getXAttrs(john()), "age");
25
|