W Emacs Lisp, jak sprawdzić, czy zmienna jest zdefiniowana?
Odpowiedzi:
możesz chcieć boundp: zwraca t, jeśli zmienna (symbol) nie jest pusta; a dokładniej, jeśli jego obecne zobowiązanie nie jest nieważne. W przeciwnym razie zwraca zero.
(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
symbol-value
funkcji, aby wydrukować rzeczywistą wartość. dokument-wartość-symbolu . Np .: Użycie eval-expression
polecenia, a następnie wpisanie tego: (symbol-value 'abracadabra)
Oprócz odpowiedzi dfa możesz również chcieć sprawdzić, czy jest on powiązany jako funkcja za pomocą fboundp :
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
Jeśli chcesz sprawdzić wartość zmiennej z poziomu emacsa (nie wiem, czy to dotyczy, skoro napisałeś „w Emacs Lisp”?):
M-:
uruchamia się Eval
w mini buforze. Wpisz nazwę zmiennej i naciśnij klawisz Return. Minibufor pokazuje wartość zmiennej.
Jeśli zmienna nie jest zdefiniowana, pojawia się błąd debugera.
M-: (boundp 'the-variable-name) RET
sprawdzi bez konieczności wywoływania błędu.
Pamiętaj, że zmienne o wartości nil są traktowane jako zdefiniowane.
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil