给定以下let函数:
(let ((foo (list a b c d))) foo)
如何修改列表foo?
(let ((foo (list a b c d))) ;some code foo)
因此,返回的foo看起来像eks:'(一些新列表)或(a b修改的d)
您可以使用 setf 修改列表中的特定元素。
setf
(let ((foo (list 'a 'b 'c 'd))) (setf (third foo) 'modified) foo)
这将返回 (a b modified d)
(a b modified d)
或者,如果要替换整个变量,可以直接用 setq
setq
(let ((foo (list 'a 'b 'c 'd))) (setq foo (list 'some 'new 'list)) foo)
你不能使用 set 对于词汇变量,只有特殊变量。
set