是否可以写例如一个Vector文本,它使用一个变量,以便正确地计算变量,结果Vector不仅包含变量的名称/符号?
例如:
(setq inner ["d" "e"])
["a" "b" inner]
结果:
["a" "b" inner]
但我想要的是:
[“a”“b”[“d”“e”]]
我在Elisp之前完成了一些Clojure编码,它按预期工作:
(def inner ["d" "e"])
user=> ["a" "b" inner]
["a" "b" ["d" "e"]]
我在这里对Elisp不了解的基本要素是什么?我当然可以解决这个问题,但我想了解发生了什么。
答案 0 :(得分:13)
使用矢量语法时,元素被认为是常量。从Emacs Lisp参考手册6.4:
矢量,如字符串或数字,被视为常量 评估:评估它的结果是相同的向量。这样做 不评估甚至检查载体的元素。
另一方面,您可以使用vector
函数创建一个评估元素的向量:
(setq inner ["d" "e"])
(vector "a" "b" inner)
=> ["a" "b" ["d" "e"]]
答案 1 :(得分:8)
使用反引号文字。可以像列表一样使用。
(setq inner ["d" "e"])
`["a" "b" ,inner]
=> ["a" "b" ["d" "e"]]