【发布时间】:2015-06-05 00:37:46
【问题描述】:
我有以下两个类:
(defclass person () ())
(defmethod speak ((s person) string)
(format t "-A" string))
(defmethod speak :before ((s person) string)
(print "Hello! "))
(defmethod speak :after ((s person) string)
(print "Have a nice day!"))
(defclass speaker (person) ())
(defmethod speak ((i speaker) string)
(print "Bonjour!"))
(speak (make-instance 'speaker) "Can I help yoU?")
这个输出是:
"Hello! "
"Bonjour!"
"Have a nice day!"
我想弄清楚的是这些方法是如何按照“顺序”执行的。我似乎无法理解正在发生的事情以及原因。据说有一个规则优先级,但我不知道在哪里可以找到它。例如,为什么"Hello!Can I help you" 在这种情况下不会触发?
【问题讨论】:
-
@PuercoPop 我也是this image的粉丝。
标签: lisp common-lisp clos