Dans Emacs LISP, comment puis-je vérifier si une variable est définie?
vous pouvez vouloir boundp: renvoie t si la variable (un symbole) n'est pas vide; plus précisément, si sa liaison actuelle n'est pas nulle. Il renvoie zéro sinon.
(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
En plus de réponse de dfa vous pouvez également voir s'il est lié en tant que fonction en utilisant fboundp :
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
Si vous voulez vérifier une valeur de variable dans emacs (je ne sais pas si cela s'applique, puisque vous avez écrit "dans Emacs LISP"?):
M-:
démarre Eval
dans le mini tampon. Écrivez le nom de la variable et appuyez sur Entrée. Le mini-tampon affiche la valeur de la variable.
Si la variable n'est pas définie, vous obtenez une erreur de débogueur.
N'oubliez pas que les variables de valeur nulle sont considérées comme étant définies.
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil