Списки свойств и списки ассоциаций
Списки ассоциаций (см. Списки ассоциаций) очень похожи на списки свойств. В отличие от списков ассоциаций, порядок пар в списке свойств не существенен, поскольку имена свойств должны быть уникальными.
Списки свойств лучше, чем списки ассоциаций, для прикрепления информации к различным именам функций или переменных Lisp. Если ваша программа хранит всю эту информацию в одном списке ассоциаций, ей обычно необходимо просматривать весь этот список каждый раз, когда она проверяет ассоциацию для определенного имени функции или переменной Lisp, что может быть медленным. Напротив, если вы храните ту же информацию в списках свойств самих имен функций или переменных, каждый поиск будет сканировать только длину одного списка свойств, который обычно короткий. Вот почему документация по переменной записывается в свойстве с именем variable-documentation. Аналогично, байткодировщик использует свойства для записи функций, требующих особого обращения.
Однако, у списков ассоциаций есть свои преимущества. В зависимости от вашего приложения, добавление ассоциации в начало списка ассоциаций может быть быстрее, чем обновление свойства. Все свойства для символа хранятся в одном списке свойств, поэтому существует возможность конфликта между различными использованиями имени свойства. (По этой причине рекомендуется выбирать имена свойств, которые, вероятно, будут уникальными, например, начинать имя свойства с обычного префикса имени программы для переменных и функций.) Список ассоциаций можно использовать как стек, где ассоциации помещаются в начало списка и впоследствии удаляются; это невозможно сделать со списком свойств.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Plists-and-Alists.html