web-dev-qa-db-fra.com

Dans Emacs LISP, comment puis-je vérifier si une variable est définie?

Dans Emacs LISP, comment puis-je vérifier si une variable est définie?

89
mike

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
133
dfa

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
44
Jacob Gabrielson

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.

4
Gauthier

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
0
cjohansson