【发布时间】:2019-09-26 11:59:17
【问题描述】:
我是 ELisp 的新手,我无法设置变量值以供以后访问。我阅读了the documentation on accessing variable values 并尝试了this thread 中的答案,但我仍然收到Wrong type argument: char-or-string-p。
这是我的*scratch* Emacs 缓冲区的输出,它运行代码并在出现任何副作用后将其插入:
(defvar my-var "var" "Some documentation")
my-var
my-var
"var"
(symbol-value 'my-var)
"var"
我可以迭代由值作为文字组成的列表:
(dolist (v '("var"))
(insert v))
varnil
但是这些尝试将值作为变量进行迭代的每一次尝试都失败,并出现相同的错误Wrong type argument: char-or-string-p:
(dolist (v '(my-var))
(insert v))
(dolist (v '((format "%S" my-var)))
(insert v))
(dolist (v '((symbol-value 'my-var)))
(insert v))
如何迭代由变量值组成的列表?
【问题讨论】:
-
使用函数 LIST 创建列表。使用引号只会为您提供文字数据。将评估 LIST 的参数并将结果放入列表中。
(list (+ 1 2)) -> (3)与'((+ 1 2)) -> ((+ 1 2)) -
请注意,您的
my-var、(format "%S" my-var)和(symbol-value 'my-var)表达式不会被计算,因为它们在引号内。 -
这条评论也可能有帮助:stackoverflow.com/questions/56523328/…