在 Emacs Lisp 中,如何检查是否定义了变量?
you may want boundp: returns t if variable (a symbol) is not void; more precisely, if its current binding is not void. It returns nil otherwise.
(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
In addition to dfa's answer you may also want to see if it's bound as a function using fboundp:
(defun baz () ) => baz (boundp 'baz) => nil (fboundp 'baz) => t
If you want to check a variable value from within emacs (I don't know if this applies, since you wrote "in Emacs Lisp"?):
M-: starts Eval in the mini buffer. Write in the name of the variable and press return. The mini-buffer shows the value of the variable.
M-:
Eval
If the variable is not defined, you get a debugger error.
Remember that variables having the value nil is regarded as being defined.
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t (progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil