2012-01-20 178 views
3

如果我使用这个我得到一个错误,因为c从未设置。elisp:如果符号有一个值返回它,否则返回零

(if (symbol-value c) 
    c 
    nil) 

我的问题是,我有一个列表包含symbols,其中一些是set到一定的价值,我想建立与他们的价值观的列表和nil小号

(setq a "x") 
(setq b "y") 
(setq l '(a b c)) 
l

所以我想用("x" "y" nil)构建一个列表。 我认为这应该是这么简单的一些事情

回答

11
(setq a "x") 
(setq b "y") 
(setq l (mapcar (lambda (x) 
        (and (boundp x) (symbol-value x))) 
       '(a b c))) 
+1

谢谢你phils。我错过了那个原始谓词'boundp'。并在'apropos'中用“符号”字符串搜索函数。 – kindahero

+2

FWIW,'apropos-documentation'搜索'符号'确实包含'boundp',但它在干草堆中有点针。 elisp手册更简单一些 - 请参阅“空白变量:缺乏值的符号”。在“变量”下。 – phils

相关问题