2009-04-16 184 views

回答

118

你可能想要boundp:如果变量(一个符号)不是空的返回t;更确切地说,如果它的当前绑定不是无效的。否则返回零。

(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 
+11

有时使用INTERN-SOFT检查符号是否存在也可能有用。 – 2009-04-16 19:15:39

39

除了dfa's answer你可能也想看看它必将作为一个函数使用fboundp:

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

如果您想了解Emacs内检查变量值(我不知道如果这适用,因为您写了“在Emacs Lisp”?):

M-:在迷你缓冲区中启动Eval。写入变量的名称并按回车键。迷你缓冲区显示变量的值。

如果变量未定义,则会出现调试器错误。

+0

等效地,`M- :(boundp'变量名称)RET`将被检查而不需要触发错误。 – 2016-12-25 17:42:18

相关问题