En Emacs Lisp, ¿cómo verifico si una variable está definida?
Respuestas:
puede querer boundp: devuelve t si la variable (un símbolo) no es nula; más precisamente, si su vinculación actual no es nula. Devuelve nil de lo contrario.
(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
Además de la respuesta de dfa, es posible que también desee ver si está vinculado como una función usando fboundp :
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
Si desea verificar el valor de una variable desde emacs (no sé si esto se aplica, ya que escribió "en Emacs Lisp"?):
M-:
comienza Eval
en el mini búfer. Escriba el nombre de la variable y presione retorno. El mini búfer muestra el valor de la variable.
Si la variable no está definida, obtiene un error de depuración.
M-: (boundp 'the-variable-name) RET
comprobará sin necesidad de generar un error.
Recuerde que las variables que tienen el valor nil se consideran definidas.
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil