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


93

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

답변:


139

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

14
때로는 INTERN-SOFT를 사용하여 기호가 있는지 확인하는 것이 유용 할 수도 있습니다.
Rainer Joswig 2009

나는 또한 때때로 symbol-value실제 값을 인쇄하기 위해 함수를 사용 합니다. 기호 값 문서 . 예 : eval-expression명령을 사용 하고 다음을 입력합니다. (symbol-value 'abracadabra)
Dhawan Gayash


4

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

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

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


마찬가지로 M-: (boundp 'the-variable-name) RET오류를 트리거 할 필요없이 확인합니다.
Radon Rosborough

질문이 Emacs의 대화 형 UI가 아니라 elisp 스크립트에 관한 것이라고 확신합니다.
binki

0

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

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

(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.