Как в Emacs Lisp проверить, определена ли переменная?
Как в Emacs Lisp проверить, определена ли переменная?
Ответы (4)
вам может понадобиться boundp: возвращает t, если переменная (символ) не является недействительной; точнее, если его текущая привязка не недействительна. В противном случае возвращается nil.
(boundp 'abracadabra) ; Starts out void.
=> nil
(let ((abracadabra 5)) ; Locally bind it.
(boundp 'abracadabra))
=> t
(boundp 'abracadabra) ; Still globally void.
=> nil
(setq abracadabra 5) ; Make it globally nonvoid.
=> 5
(boundp 'abracadabra)
=> t
person
dfa
schedule
16.04.2009
иногда также может быть полезно использовать INTERN-SOFT, чтобы проверить, существует ли символ.
- person Rainer Joswig; 16.04.2009
Я также иногда использую функцию
symbol-value для вывода фактического значения. символ-значение-документ. Например: используя команду eval-expression, а затем набирая это: (symbol-value 'abracadabra)
- person Dhawan Gayash; 26.09.2020
Блок
let возвращает мне nil. Это работает с лексической привязкой?
- person HappyFace; 15.05.2021
В дополнение к dfa answer вы также можете проверить, привязан ли он как функция с помощью fboundp:
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
person
Jacob Gabrielson
schedule
17.04.2009
Если вы хотите проверить значение переменной из emacs (я не знаю, применимо ли это, поскольку вы написали «в Emacs Lisp»?):
M-: запускает Eval в мини-буфере. Введите имя переменной и нажмите return. Мини-буфер показывает значение переменной.
Если переменная не определена, вы получите ошибку отладчика.
person
Gauthier
schedule
29.06.2010
Точно так же
M-: (boundp 'the-variable-name) RET будет проверять без необходимости запуска ошибки.
- person Radon Rosborough; 25.12.2016
Я почти уверен, что речь идет о сценариях elisp, а не об интерактивном пользовательском интерфейсе Emacs.
- person binki; 04.07.2017
Помните, что переменные, имеющие значение nil, считаются определяемыми.
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil
person
cjohansson
schedule
07.07.2018