我试图在我的函数中为变量赋一个参数(list)。我一直得到变量L没有值,我怎样才能在函数里面给list参数赋值?
(defun pali(list)
(defvar a nil)
(defvar b nil)
(setq a (list))
(setq b (reverse list))
)
答案 0 :(得分:1)
如果我理解正确,你想要的是
(defun pali (list)
(let ((a list))
((b (reverse list)))
...))
将DEFVAR置于函数中几乎肯定是错误的,如果你使用DEFVAR和A和B这样的名字,可能会对你造成严重伤害.DEFVAR会创建一个全局变量,并且它会生成一个名为它的符号& #34;特别&#34 ;;在将来你使用它的任何地方,你都会获得符号值而不是词法变量。当你不期待它时会发生奇怪的事情。这就是为什么DEFVAR变量通常被命名为 A 等,而不仅仅是A.使用LET来制作一个正常的词法变量。然后,最初将它设置为NIL然后使用SETQ来改变它并不是很多,尽管如果你愿意,你可以这样做。即便只是
(let (a b)
(setq a list
b (reverse list))
...)
如果那就是你想要的[注意你可以用一个SETQ来设置很多变量。当然不要这样做