Dans Emacs Lisp, comment vérifier si une variable est définie?


91

Dans Emacs Lisp, comment vérifier si une variable est définie?

Réponses:


137

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

13
parfois, il peut également être utile d'utiliser INTERN-SOFT pour vérifier si un symbole existe.
Rainer Joswig


4

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 Evaldans 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.


De manière équivalente, M-: (boundp 'the-variable-name) RETvérifiera sans qu'il soit nécessaire de déclencher une erreur.
Radon Rosborough

Je suis sûr que la question concerne les scripts elisp, pas l'interface utilisateur interactive d'Emacs.
binki

0

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.