goco
1
CASE1:
(setq xlist '("/usr/bin/x0"
"/usr/bin/x1"))
(message (car xlist))
执行没有问题
CASE2:
但是下面的语句为何不能执行,正确的做法应该如何实现
(setq base-dir "/usr/bin/")
(setq ylist '((concat base-dir "y0")
(concat base-dir "y1")))
(message (car ylist))
C-x c-e 错误
Debugger entered--Lisp error: (wrong-type-argument stringp (concat "/usr/bin/" "y0"))
message((concat "/usr/bin/" "y0"))
eval((message (car ylist)) nil)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
quote会使它里面不管多深的层次全部被quote(不求值),所以你这里ylist
就成了有两个元素的quoted list,其中第一个元素是:有3个元素concat
base-dir
"y0"
的quoted list.
我这个问题还真是典型哈哈:
1 个赞
(setq ylist (list (concat base-dir "y0")
(concat base-dir "y1")))