8.2 Доступ к хеш-таблицам

В этом разделе описываются функции для доступа и хранения ассоциаций в хеш-таблице. В общем случае, любым объектом Lisp можно использовать в качестве хеш-ключа, если только метод сравнения не накладывает ограничений. Любой объект Lisp также может использоваться в качестве значения.

Функция: gethash key table &optional default

Эта функция ищет key в table и возвращает его связанное value — или default, если key не имеет ассоциации в table.

Функция: puthash key value table

Эта функция вставляет ассоциацию для key в table со значением value. Если key уже имеет ассоциацию в table, value заменяет старое связанное значение. Эта функция всегда возвращает value.

Функция: remhash key table

Эта функция удаляет ассоциацию для key из table, если она существует. Если key не имеет ассоциации, remhash ничего не делает.

Примечание Common Lisp: В Common Lisp remhash возвращает не-nil, если он фактически удалил ассоциацию, и nil в противном случае. В Emacs Lisp remhash всегда возвращает nil.

Функция: clrhash table

Эта функция удаляет все ассоциации из хеш-таблицы table, чтобы она стала пустой. Это также называется очисткой хеш-таблицы. clrhash возвращает пустую table.

Функция: maphash function table

Эта функция вызывает function один раз для каждой ассоциации в table. Функция function должна принимать два аргумента — key, перечисленный в table, и его связанное value. maphash возвращает nil.

function может вызывать puthash для установки нового значения для key и remhash для удаления key, но не должна добавлять, удалять или изменять другие ассоциации в table.