クラスがリストにある場合、clos アクセサー関数を使用できません。
クラスaがあるとします:
(defclass a ()
((a :accessor a
:initarg :a)))
そして、私は2つのインスタンスを作成します:
(defparameter b (make-instance 'a :a 1))
(defparameter c (make-instance 'a :a 2))
そして、リスト内にある間に各インスタンスの値を取得する関数を作成したい場合は、
(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 でアクセサーを直接呼び出す代わりに、アクセサーを含む関数を呼び出した場合にも発生します。また、マップカーの代わりにループなどを使ってみました。
ありがとう