[emacs] Emacs Lisp에서 변수가 정의되었는지 어떻게 확인합니까?

Emacs Lisp에서 변수가 정의되었는지 어떻게 확인합니까?



답변

boundp를 원할 수 있습니다 : 변수 (기호)가 void가 아니면 t를 반환합니다. 보다 정확하게는 현재 바인딩이 무효가 아닌 경우입니다. 그렇지 않으면 nil을 반환합니다.

  (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


답변

dfa의 답변 외에도 fboundp를 사용하여 함수로 바인딩되었는지 확인하고 싶을 수도 있습니다 .

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


답변

emacs 내에서 변수 값을 확인하려면 ( “in Emacs Lisp”라고 썼기 때문에 이것이 적용되는지 모르겠습니다.) :

M-:Eval미니 버퍼에서 시작합니다 . 변수 이름을 입력하고 Enter 키를 누릅니다. 미니 버퍼는 변수의 값을 보여줍니다.

변수가 정의되어 있지 않으면 디버거 오류가 발생합니다.


답변

값이 nil 인 변수는 정의 된 것으로 간주됩니다.

(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t

(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil


답변