e-e*_*ght 1 lisp emacs elisp list quote
我正在尝试使用 循环遍历字符串列表dolist,并使用前缀字符串连接元素,使用string-joinfromsubr-x创建新字符串。
(dolist (p '("a" "b" "c"))
(string-join '(p ".rnc")))
Run Code Online (Sandbox Code Playgroud)
我收到错误Wrong type argument: sequencep, p。但是下面的代码可以工作。
(dolist (p '("a" "b" "c"))
(print p))
Run Code Online (Sandbox Code Playgroud)
所以这似乎是一个循环的问题string-join或等效的mapconcat循环内的问题。有什么建议么?谢谢!
Run Code Online (Sandbox Code Playgroud)'(p ".rnc")
理解“ '...which”(quote ...)并不是制作列表的简写,这一点非常重要。
它是一种使 lisp 返回由 lisp 读取器创建的对象(未计算)的形式。
在这种情况下,lisp 阅读器返回一个包含符号p和字符串的列表".rnc"——而符号p确实不是一个序列(因此你的错误)。
用于使用 的评估值作为变量来(list p ".rnc")创建列表。p
ps 请务必回顾一下 lisp 执行的不同特征read和eval阶段。一旦你理解了其中的区别,quote就会变得更有意义。