Spec-Zone.ru › Elisp

Записи

Записи предназначены для программистов, чтобы создавать объекты с новыми типами, которые не встроенны в 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API