Wie überprüfe ich in Emacs Lisp, ob eine Variable definiert ist?
90
Möglicherweise möchten Sie boundp: Gibt t zurück, wenn die Variable (ein Symbol) nicht ungültig ist. genauer gesagt, wenn seine derzeitige Bindung nicht ungültig ist. Andernfalls wird null zurückgegeben.
(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
Zusätzlich zur Antwort von dfa möchten Sie möglicherweise auch sehen, ob es mit fboundp als Funktion gebunden ist :
quelle
Wenn Sie einen Variablenwert aus emacs heraus überprüfen möchten (ich weiß nicht, ob dies zutrifft, da Sie "in Emacs Lisp" geschrieben haben?):
M-:
startetEval
im Minipuffer. Schreiben Sie den Namen der Variablen und drücken Sie die Eingabetaste. Der Minipuffer zeigt den Wert der Variablen an.Wenn die Variable nicht definiert ist, wird ein Debuggerfehler angezeigt.
quelle
M-: (boundp 'the-variable-name) RET
wird geprüft, ohne dass ein Fehler ausgelöst werden muss.Denken Sie daran, dass Variablen mit dem Wert nil als definiert angesehen werden.
quelle