2009-04-16 6 views

risposta

118

si può volere boundp: restituisce t se variable (a symbol) non è vuoto; più precisamente, se il suo attuale legame non è nullo. Ritorna nullo altrimenti.

(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 
+11

a volte potrebbe anche essere utile usare INTERN-SOFT per verificare se esiste un simbolo. –

39

Oltre a dfa's answer si potrebbe anche voler vedere se è legato come una funzione utilizzando fboundp:

(defun baz() 
) 
=> baz 
(boundp 'baz) 
=> nil 
(fboundp 'baz) 
=> t 
3

Se si desidera controllare un valore variabile da dentro emacs (non so se questo vale, dal momento che hai scritto "in Emacs Lisp"?):

M-: avvia Eval nel mini buffer. Scrivi il nome della variabile e premi Invio. Il mini-buffer mostra il valore della variabile.

Se la variabile non è definita, si ottiene un errore di debugger.

+0

Equivalentemente, 'M-: (boundp 'the-variable-name) RET' controllerà senza che sia necessario attivare un errore. –

+0

Sono abbastanza sicuro che la domanda riguarda gli script elisp, non l'interfaccia utente interattiva di Emacs. – binki