【问题标题】:Change variable defined in let function更改 let 函数中定义的变量
【发布时间】:2018-02-22 17:42:27
【问题描述】:

给定以下 let 函数:

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

如何修改列表 foo?

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

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

我尝试过(设置),但 foo 仍将作为原始列表返回。

【问题讨论】:

    标签: lisp let


    【解决方案1】:

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

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

    这将返回(a b modified d)

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

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

    您不能将set 与词法变量一起使用,只能使用特殊变量。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 2022-01-16
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2018-02-08
      相关资源
      最近更新 更多