在 Emacs Lisp 中,如何检查变量是否已定义?
问问题
24702 次
4 回答
148
你可能想要 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
于 2009-04-16T19:06:05.410 回答
4
如果你想从 emacs 中检查变量值(我不知道这是否适用,因为你写了“在 Emacs Lisp 中”?):
M-:
从Eval
迷你缓冲区开始。写下变量的名称并按回车键。迷你缓冲区显示变量的值。
如果未定义变量,则会出现调试器错误。
于 2010-06-29T12:01:09.280 回答
3
请记住,具有值 nil 的变量被视为已定义。
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil
于 2018-07-07T05:28:37.357 回答