Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Common lisp 编译公共Lisp代码时出现奇怪的错误_Common Lisp_Clos - Fatal编程技术网

Common lisp 编译公共Lisp代码时出现奇怪的错误

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 :

我在编译某些代码时遇到以下错误:

方法的Lambda列表与泛型函数的Lambda列表不兼容 初始化实例。方法的lambda列表:PAT::E 通用函数的:CCL::INSTANCE&REST CCL::INITARGS&KEY &允许其他键

以下是导致错误的代码:

(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参数