当我调用(绘制win)时,我得到一个错误“泛型函数找不到适用的方法。我刚刚进入CLOS,我使用sdl2kit来简单地渲染一个窗口。
(defclass game-window (kit.sdl2:window)
((rotation :initform 0.0)))
(defmethod render ((win game-window))
(with-slots (rotation) win
(gl:load-identity)
(gl:rotate rotation 0 0 1)
(gl:clear-color 0.0 0.0 1.0 1.0)
(gl:clear :color-buffer)
(gl:begin :triangles)
(gl:color 1.0 0.0 0.0)
(gl:vertex 0.0 1.0)
(gl:vertex -1.0 -1.0)
(gl:vertex 1.0 -1.0)
(gl:end)))
(defgeneric draw(win)
(:documentation "draw window"))
(defun main ()
(let (( win (make-instance 'game-window)))
(draw win)))
答案 0 :(得分:0)
所以有两个问题。一个是英语问题(您必须格外小心,因为每个英语单词都带有多种编程含义,例如,当您编写“ call”时,并不清楚是“ name”还是“ invoke / apply”。)但这并不重要
另一个问题是您不知道通用函数是什么。这是一个快速的解释器。
泛型函数大致包括三个部分:
一种方法包括三个部分
nil
)调用泛型函数时会发生这种情况:
通常会缓存步骤2-4。
第3步大致有两种形式:
around
方法都被调用before
方法call-next-method
设置了适当的方法链)after
方法around
方法返回结果and
或progn
或append
之类的运算符。要将方法添加到泛型函数的方法集中,通常使用defmethod
,其名称与泛型函数相同