Записи
Записи предназначены для программистов, чтобы создавать объекты с новыми типами, которые не встроенны в Emacs. Они используются в качестве базового представления cl-defstruct и defclass экземпляров.
Внутри, объект записи очень похож на вектор; к его слотам можно получить доступ с помощью aref, и он может быть скопирован с помощью copy-sequence. Однако первый слот используется для хранения его типа, возвращаемого type-of. Кроме того, в текущей реализации записи могут иметь не более 4096 слотов, в то время как векторы могут быть намного больше. Как и массивы, записи используют нумерацию с нуля: первый слот имеет индекс 0.
Слот типа должен быть символом или описателем типа. Если это описатель типа, будет возвращен символ, обозначающий его тип; Описатели типов. Любой другой тип объекта возвращается как есть.
Печатное представление записей — ‘#s’, за которым следует список, определяющий содержимое. Первый элемент списка должен быть типом записи. Следующие элементы — слоты записи.
Для избежания конфликтов с другими именами типов, программы Lisp, определяющие новые типы записей, обычно должны использовать соглашения об именовании пакета, в котором введены эти типы записей для имен типов. Обратите внимание, что имена типов, которые могут потенциально конфликтовать, могут быть неизвестны в момент загрузки пакета, определяющего тип записи; они могут быть загружены в будущем.
Запись рассматривается как константа для вычисления: результат её вычисления — та же самая запись. Это не вычисляет и даже не проверяет слоты. См. Самовычисляемые формы.
| • Функции для записей | Функции для записей. | |
| • Обратная совместимость | Совместимость для cl-defstruct. |
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/Records.html