(defmethod update :before ((a AGENT) (e UPDATE))
(when (null (timestamps a))
(push 0 (pls a))
(push 0 (fitnesses a)))
(push (timestamp e) (timestamps a))
(push (price e) (revalprices a))
(preprocess a e)
(format T ":BEFORE completed for agent ̃A and event ̃A ̃%" a e))
上面的方法来自一本书,我想询问update
和之间的区别:before
。根据我对CLOS Lisp中定义方法的理解,方法update
的名称是,但该怎么:before
做?
最后,最后一行是做什么的? (format T ":BEFORE completed for agent ̃A and event ̃A ̃%" a e))
您正在查看的是:before
辅助方法的定义。当update
使用满足类型agent
and的参数调用方法时update
,这段代码将在方法主体之前运行。也可以定义:after
和:around
辅助。请参阅本PCL章节以获取更多信息。
至于format
字符串,我认为这是错误的。您所拥有的表单只会发出警告,告知您传递了太多格式参数。我认为这是什么意思
(format t ":BEFORE completed for agent ~a and event ~a~%" a e)
它将在流中打印,":BEFORE completed for agent "
后跟的值a
,然后是" and event "
的值e
,然后是换行符*standard-output*
。有关CLformat
指令的更多信息,请参阅PCL的另一章,以及CLHS的本节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句