我很好奇如何
(write
(make-instance 'simple-error
:format-control "A:~a ~% B:~a~%"
:format-arguments `("A" "B"))
:stream nil)
有效,因为我试图自己实现它以获得基本 lisp 功能的经验,但很快就不得不意识到,我做不到。作为直观的实现方式:
(defmethod my-write ((simple-error err))
(FORMAT nil (if (simple-condition-format-control err)
(simple-condition-format-control err)
"")
(simple-condition-format-arguments err)))
显然不能工作,因为它(simple-condition-format-arguments err)
返回参数列表,因此,在上面的示例中,“B:~a”没有相应的打印参数。
那么我将如何实际实现这个方法呢?