Emacs Lispで、変数が定義されているかどうかを確認するにはどうすればよいですか?


92

Emacs Lispで、変数が定義されているかどうかを確認するにはどうすればよいですか?

回答:


138

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

13
シンボルが存在するかどうかを確認するためにINTERN-SOFTを使用すると便利な場合もあります。
Rainer Joswig、2009


4

emacs内から変数値をチェックしたい場合(「Emacs Lispで」と書いたので、これが当てはまるかどうかわかりません):

M-:Evalミニバッファーで開始します。変数の名前を入力してReturnキーを押します。ミニバッファーは変数の値を示します。

変数が定義されていない場合、デバッガエラーが発生します。


同様に、M-: (boundp 'the-variable-name) RETエラーをトリガーする必要なしにチェックします。
Radon Rosborough、2016

問題はEmacsのインタラクティブなUIではなく、elispスクリプトに関するものだと確信しています。
ビンキ2017

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.