Это настоящий вопрос начинающих, я думаю, но я не мог найти ответ здесь. Моя проблема: Я хотел бы установить значение слота класса так:CLOS: конвертировать символ в accessor
(setf (accessor class) value)
я написал небольшую функцию для этого:
(defun set-class-slots (class slot value)
(setf (slot class) value))
Я использую это в течение loop, в котором я выполняю итерацию через 2 списка (слоты (список символов) и значения (список чисел)) и хотел бы установить несколько слотов экземпляра для значений.
(loop for slot in slots for value in values do
(set-class-slots <myclass> slot value)
)
Ошибка я получаю:
"Неопределенный оператор (SETF слот) в виде ((слот SEtF) #: | Магазин-вар-773597 | #. G773598"
Я думаю, проблема в том, что setf в моей функции не использует значение, предоставленное для ввода arg. 'Slot', но считывает «slot» в качестве оператора.
Я пробовал разные вещи, функцию-символ, funcall, и т. д., но больше не знаю, что делать, поскольку я также не совсем понимаю, что происходит не так.
Любая помощь будет принята с благодарностью.
Спасибо, Marleynoe
Любая причина вы не используете 'SLOT-value'? – Barmar
Я работаю в среде, основанной на lisp, и для классов, которые мне нужно изменить, к сожалению SLOT-VALUE не работает (т. Е. Слот остается неизмененным). – marleynoe
Какая среда? Это обычная реализация Lisp? Если нет, обновите теги вопроса соответствующим образом. – acelent