1
(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))

4

1 回答 1

2

您正在查看的是:before辅助方法的定义。当使用满足类型和update的参数调用该方法时,这段代码将在主方法体之前运行。也可以定义和辅助。有关更多信息,请查看此 PCL 章节agentupdate:after:around

至于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 的这一部分

于 2014-02-19T01:45:26.970 回答