在 Emacs Lisp 中,如何检查变量是否已定义?
您可能需要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
dfa的答案之外,您可能还想看看它是否使用fboundp作为函数绑定:
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
M-:
在迷你缓冲区中启动
Eval
。输入变量的名称并按回车键。迷你缓冲区显示变量的值。如果未定义变量,则会出现调试器错误。
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil