当类在列表中时,我不能使用clos访问器函数。
假设我有A班:
(defclass a ()
((a :accessor a
:initarg :a)))我做了两个例子:
(defparameter b (make-instance 'a :a 1))
(defparameter c (make-instance 'a :a 2))然后,如果我想创建一个函数,在列表中获取每个实例的a值,我将这样做。
(defun get-a (lst)
(mapcar #'a lst))然后用它
(get-a '(b c))但我这样做了--我犯了一个错误:
There is no applicable method for the generic function
#<STANDARD-GENERIC-FUNCTION A (1)>
when called with arguments
(B).
[Condition of type SIMPLE-ERROR]如果不是直接用mapcar调用访问器,而是调用包含访问器的函数,也会发生这种情况。此外,我尝试使用循环和其他东西,而不是地图。
谢谢
发布于 2014-03-05 20:16:49
如果你读错了,你就会得到解释。
There is no applicable method for the generic function
#<STANDARD-GENERIC-FUNCTION A (1)>
when called with arguments
(B).所以你接到了一个类似于(a 'b)的电话。但是b是一个符号,而不是CLOS实例。
(b c)是由两个符号组成的列表。您可能希望创建一个包含两个CLOS实例的列表。使用LIST创建带有计算参数的列表。
https://stackoverflow.com/questions/22207932
复制相似问题