如何访问列表中变量的值?
How to access the value of a variable inside a list?
我是 ELisp 的新手,我无法设置变量值以便稍后访问。我读 the documentation on accessing variable values and tried the answers in 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))
如何迭代由变量值构成的列表?
您需要评估您的变量:
(dolist (v (list my-var))
(insert v))
或自己获取值:
(dolist (v (list 'my-var))
(insert (symbol-value v)))
如果你想混合使用变量和文字,那么使用第一种方法:
(defvar my-var "var" "Some documentation")
(dolist (d (list my-var
"other-var"))
(insert d))
另见 When to use ' (or quote) in Lisp?
我是 ELisp 的新手,我无法设置变量值以便稍后访问。我读 the documentation on accessing variable values and tried the answers in 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))
如何迭代由变量值构成的列表?
您需要评估您的变量:
(dolist (v (list my-var))
(insert v))
或自己获取值:
(dolist (v (list 'my-var))
(insert (symbol-value v)))
如果你想混合使用变量和文字,那么使用第一种方法:
(defvar my-var "var" "Some documentation")
(dolist (d (list my-var
"other-var"))
(insert d))
另见 When to use ' (or quote) in Lisp?