如何设置变量以指向列表单元格?
我正在尝试编写一个宏来将列表中的所有值乘以一个值。这是我目前拥有的:
(defmacro scale (areas scale)
`(dotimes (n (list-length ,areas))
(setf (nth n ,areas) (* (nth n ,areas) ,scale))))
我担心这不是最有效的做事方式,因为我两次查找第 n 个单元格。我宁愿设置一个变量指向第 n 个单元格,以便setf
可以修改该单元格的值并*
可以在其计算中使用该单元格的值。
更好的是使用dolist
并将变量设置为单元格引用。这是可能吗?
虽然我在这里,但当您有一个单元格时,是否也可以获取列表中的下一个单元格。有点像迭代器,这样我就可以执行以下操作:
(let ((area (car areas))
(loop while area do
(setf area (* area scale))
(setf area (next area))))
但我不知道如何区分设置指针或设置引用单元格的值。
我希望我有道理:)