更改 let 函数中定义的变量

Change variable defined in let function

给定以下 let 函数:

(let ((foo (list a b c d)))
foo)

如何修改列表 foo?

(let ((foo (list a b c d)))
;some code
foo)

所以 returned foo 看起来像 eks: '(some new list) or (a b modified d)

我试过(设置)但 foo 仍将 return 作为原始列表。

您可以使用 setf 修改列表中的特定元素。

(let ((foo (list 'a 'b 'c 'd)))
  (setf (third foo) 'modified)
  foo)

这将 return (a b modified d)

或者如果你想替换整个变量,你可以直接赋值给它 setq:

(let ((foo (list 'a 'b 'c 'd)))
  (setq foo (list 'some 'new 'list))
  foo)

不能对词法变量使用 set,只能对特殊变量使用。