Common lisp 编译公共Lisp代码时出现奇怪的错误
我在编译某些代码时遇到以下错误: 方法的Lambda列表与泛型函数的Lambda列表不兼容 初始化实例。方法的lambda列表:PAT::E 通用函数的:CCL::INSTANCE&REST CCL::INITARGS&KEY &允许其他键 以下是导致错误的代码:Common lisp 编译公共Lisp代码时出现奇怪的错误,common-lisp,clos,Common Lisp,Clos,我在编译某些代码时遇到以下错误: 方法的Lambda列表与泛型函数的Lambda列表不兼容 初始化实例。方法的lambda列表:PAT::E 通用函数的:CCL::INSTANCE&REST CCL::INITARGS&KEY &允许其他键 以下是导致错误的代码: (defclass event () ((timestamp :initarg :timestamp :accessor timestamp) (value :initarg :value :
(defclass event ()
((timestamp
:initarg :timestamp
:accessor timestamp)
(value
:initarg :value
:accessor value)))
(defclass update (event)
((security
:initarg :sectype
:accessor sectype)))
(defclass prc (update)
((lastp
:accessor lastp)
(lastv
:accessor lastv)))
(defmethod initialize-instance :after ((e prc)) ; <- :(
(setf (lastp e) (first (value e)))
(when (second (value e))
(setf (lastv e) (second (value e)))))
任何关于可能导致错误的提示都将不胜感激。您需要将参数列表末尾的&key添加到initialize instance方法中
引用第17章实用公共Lisp。对象重新定向:类:
参数列表中的&key需要使方法的参数列表与泛型函数的参数列表保持一致,为INITIALIZE-INSTANCE泛型函数指定的参数列表包括&key,以便允许各个方法提供自己的关键字参数,但不需要任何特定的参数。因此,每个方法都必须指定&key,即使它没有指定任何&key参数
您需要将参数列表末尾的&key添加到initialize实例方法中
引用第17章实用公共Lisp。对象重新定向:类:
参数列表中的&key需要使方法的参数列表与泛型函数的参数列表保持一致,为INITIALIZE-INSTANCE泛型函数指定的参数列表包括&key,以便允许各个方法提供自己的关键字参数,但不需要任何特定的参数。因此,每个方法都必须指定&key,即使它没有指定任何&key参数