我有以下两个课程:
(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"
在这种情况下不开火?