Spec-Zone.ru › Elisp

Определение символов

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

defvar и defconst — это специальные формы, которые определяют символ как глобальную переменную — переменную, к которой можно получить доступ в любой точке программы Lisp. Подробности о переменных см. в разделе Переменные.

Чтобы определить настраиваемую переменную, используйте макрос defcustom, который также вызывает defvar в качестве подпрограммы (см. Настройка).

В принципе, вы можете присвоить значение переменной любому символу с помощью setq, независимо от того, был ли он предварительно определен как переменная. Однако вы должны написать определение переменной для каждой глобальной переменной, которую хотите использовать; в противном случае ваша программа Lisp может работать некорректно при включённом лексическом охвате (см. Лексическое охватывание переменных).

defun определяет символ как функцию, создаёт лямбда-выражение и сохраняет его в ячейке функции символа. Таким образом, это лямбда-выражение становится определением функции символа. (Термин «определение функции», обозначающий содержимое ячейки функции, происходит из идеи, что defun даёт символу его определение как функции.) defsubst и defalias — это два других способа определения функции. См. Функции.

defmacro определяет символ как макрос. Он создаёт объект макроса и сохраняет его в ячейке функции символа. Обратите внимание, что данный символ может быть макросом или функцией, но не тем и другим одновременно, потому что определения макроса и функции хранятся в ячейке функции, и эта ячейка может содержать только один объект Lisp в любой момент времени. См. Макросы.

Как уже отмечалось, Emacs Lisp позволяет определять один и тот же символ как переменную (например, с помощью defvar) и как функцию или макрос (например, с помощью defun). Такие определения не конфликтуют.

Эти определения также служат руководством для инструментов программирования. Например, команды C-h f и C-h v создают буферы справки, содержащие ссылки на соответствующие определения переменных, функций или макросов. См. Справка по именам в Справочнике по GNU Emacs.

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/Definitions.html

Spec-Zone.ru

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