我收到此错误:
错误:找不到名为 ENTITY 的类。执行时:FIND-CLASS,在进程 Listener(4) 中。键入 cmd-/ 继续,cmd-。要中止,cmd-\ 以获取可用重新启动的列表。如果继续:尝试再次查找课程类型:?其他选项。
当我加载/编译包含此宏的文件时:
(defmacro def-post-entity (entity)
(let* ((repository-var-name (cl-ddd::repository-var entity))
(base-url (string-downcase (concatenate 'string "/api/" (string entity))))
(progn-statement '(progn)))
(loop
for slot in (ccl:class-slots (find-class entity))
append `(setf (,(ccl:slot-definition-name slot) new-entity)
(cdr (assoc ,(string (ccl:slot-definition-name slot)) params :test #'string=)))
into progn-statement)
`(setf (ningle:route cl::*app* ,base-url :method :post)
(lambda (params)
(let ((new-entity (make-instance ,entity)))
(,progn-statement))))))
据我了解 lisp 宏(我是新手),find-class 没有理由期望 entity 是类名,它是宏的参数。错误消息表明正在执行 find-class,但事实并非如此。我只是通过 (ql:quickload "filename") 加载包含此宏的文件或直接编译它。
任何帮助将不胜感激,以帮助我了解正在发生的事情并进行修复。