Dans Emacs Lisp, comment vérifier si une variable est définie?
Réponses:
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. Sinon, il renvoie nul.
(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 la réponse de dfa, vous voudrez peut-être également voir si elle est liée 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 depuis emacs (je ne sais pas si cela s'applique, puisque vous avez écrit "in Emacs Lisp"?):
M-:
démarre Eval
dans le mini tampon. Écrivez le nom de la variable et appuyez sur retour. Le mini-tampon affiche la valeur de la variable.
Si la variable n'est pas définie, vous obtenez une erreur de débogage.
M-: (boundp 'the-variable-name) RET
vérifiera sans qu'il soit nécessaire de déclencher une erreur.
N'oubliez pas que les variables ayant la valeur nil sont considérées comme définies.
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil