Переменные с ограниченными значениями
Обычные переменные Lisp могут принимать любое значение, являющееся допустимым объектом Lisp. Однако некоторые переменные Lisp определены не в Lisp, а в C. Большинство из этих переменных определены в коде C с помощью DEFVAR_LISP. Как и переменные, определенные в Lisp, они могут принимать любое значение. Однако некоторые переменные определены с помощью DEFVAR_INT или DEFVAR_BOOL. См. Написание примитивов Emacs, в частности описание функций типа syms_of_filename, для краткого обсуждения реализации на C.
Переменные типа DEFVAR_BOOL могут принимать только значения nil или t. Попытка присвоить им любое другое значение приведет к их установке в значение t:
(let ((display-hourglass 5))
display-hourglass)
⇒ t
- Переменная: byte-boolean-vars
Эта переменная содержит список всех переменных типа
DEFVAR_BOOL.
Переменные типа DEFVAR_INT могут принимать только целочисленные значения. Попытка присвоить им любое другое значение приведет к ошибке:
(setq undo-limit 1000.0) error→ Wrong type argument: integerp, 1000.0
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/Variables-with-Restricted-Values.html