【问题标题】:elisp: if symbol has a value return it otherwise return nilelisp:如果符号有值则返回,否则返回 nil
【发布时间】:2012-01-20 00:23:28
【问题描述】:

如果我使用它,我会收到一个错误,因为 c 从未设置。

(if (symbol-value c)
    c
  nil)

我的问题是我有一个包含symbols 的列表,其中一些是set 到某个值,我想用它们的值和nils 构造一个列表

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

所以从l 我想用("x" "y" nil) 构造一个列表。 我认为这应该是一件很简单的事情

【问题讨论】:

    标签: emacs lisp elisp


    【解决方案1】:
    (setq a "x")
    (setq b "y")
    (setq l (mapcar (lambda (x)
                      (and (boundp x) (symbol-value x)))
                    '(a b c)))
    

    【讨论】:

    • 谢谢菲尔斯。我错过了那个原始谓词boundp。并在apropos 中搜索带有“符号”字符串的函数。
    • FWIW,apropos-documentation 搜索 symbol 确实包括 boundp,但它有点像大海捞针。 elisp 手册更简单一些——请参阅“Void 变量:缺少值的符号”。在“变量”下。
    猜你喜欢
    • 2021-11-19
    • 2012-11-21
    • 2015-11-11
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    相关资源
    最近更新 更多