【发布时间】:2015-07-03 18:28:43
【问题描述】:
我猜这是一个真正的初学者问题,但我在这里找不到答案。 我的问题:我想像这样设置一个类的插槽的值:
(setf (accessor class) value)
为此我写了一个小函数:
(defun set-class-slots (class slot value)
(setf (slot class) value))
我在 for 循环中使用它,在其中我正在迭代 2 个列表(槽(符号列表)和值(数字列表)),并希望将实例的多个槽设置为价值。
(loop for slot in slots for value in values do
(set-class-slots <myclass> slot value)
)
我得到的错误是:
“未定义的运算符 (setf slot) 形式为 ((setf slot) #:|Store-Var-773597|#:g773598。”
我认为问题在于我的函数中的 setf 没有使用为输入 arg 提供的值。 'slot' 但将 'slot' 读取为运算符。
我尝试了不同的东西,符号函数、函数调用等,但不知道该怎么做——因为我也不太明白出了什么问题。
任何帮助将不胜感激。
谢谢, 马利诺
【问题讨论】:
-
有什么理由不使用
SLOT-VALUE? -
我在一个基于 lisp 的环境中工作,不幸的是,我需要修改的类 SLOT-VALUE 不起作用(即 slot 保持未修改)。
-
那是什么环境?它是一个 Common Lisp 实现吗?如果没有,请相应地更新问题的标签。
标签: common-lisp symbols accessor clos