gpt4 book ai didi

Lisp 将变量分配给参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:34 24 4
gpt4 key购买 nike

我试图在我的函数中为变量分配一个参数(列表)。我一直收到变量 L 没有值,如何将函数内的变量分配给列表参数?

   (defun pali(list)
(defvar a nil)
(defvar b nil)
(setq a (list))
(setq b (reverse list))
)

最佳答案

如果我没理解错的话,你想要的是

(defun pali (list)
(let ((a list))
((b (reverse list)))
...))

几乎可以肯定,将 DEFVAR 放在函数中是错误的,如果您将 DEFVAR 与 A 和 B 等名称一起使用,则可能会严重伤害您。DEFVAR 是一个全局变量,它使命名它的符号变得“特殊”;以后无论你在哪里使用它,你都会得到符号值而不是词法变量。奇怪的事情会在你意想不到的时候发生。这就是为什么 DEFVAR 变量通常被命名为 A 等,而不仅仅是 A。使用 LET 来创建一个普通的词法变量。然后,最初将它设置为 NIL,然后使用 SETQ 来更改它并没有太多意义,但如果您愿意,也可以这样做。甚至只是

(let (a b)
(setq a list
b (reverse list))
...)

如果这就是你想要的 [请注意,你可以使用一个 SETQ 来设置许多变量。当然不必]

关于Lisp 将变量分配给参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42015065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com