gpt4 book ai didi

lisp - 为什么 plant1 一直是 NIL?

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

拜托,有人能解释一下为什么“make-array”对 plant1 没有影响吗?

(LET (plant1) ((setq plant1 (make-array '(4 4))) (print plant1) (setf (AREF PLANT1 0 0) 1)))

NILError: Attempt to do an array operation on NIL which is not an array.[condition type: TYPE-ERROR]

最佳答案

(LET (plant1) ((setq plant1 (make-array '(4 4))) (print plant1) (setf (AREF PLANT1 0 0) 1)))

第一条规则:格式化你的代码。

(LET (plant1)
((setq plant1 (make-array '(4 4)))
(print plant1)
(setf (AREF PLANT1 0 0) 1)))

括号太多了。 let 的语法有一个代码体,它是一系列形式。您在序列周围加上括号,这是错误的。阅读 LET 的 Common Lisp HyperSpec 条目。它提到了语法。

使用:

(LET (plant1)
(setq plant1 (make-array '(4 4)))
(print plant1)
(setf (AREF PLANT1 0 0) 1))

这与:

(LET ((plant1 (make-array '(4 4))))
(print plant1)
(setf (AREF PLANT1 0 0) 1))

关于lisp - 为什么 plant1 一直是 NIL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3538983/

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