1

我一直在研究 Common Lisp Object Protocol (CLOS),但遇到了一个疑问。

有人知道CLOS中的“标准方法组合”和“简单方法组合”是什么意思吗?

在“简单方法组合”中,“列表”方法组合意味着什么?

(defgeneric what-are-you? (obj)
   (:method-combination list :most-specific-last))

(defmethod what-are-you? list ((obj fixnum))
   "I am a FIXNUM")

(defmethod what-are-you? list ((obj float))
   "I am a FLOAT")

(defmethod what-are-you? list ((obj number))
   "I am a NUMBER")
4

1 回答 1

2

Common Lisp 预定义了标准方法组合。这是默认设置。

此外还有一堆所谓的“简单方法组合”: +, and, append, list, max, min, nconc, or, 和progn.

请记住,方法组合会查看哪些方法适用于特定的参数集,然后将它们组合成一个有效的方法,并与参数一起调用该方法。

方法组合结合了所有适用的list主要方法(只有这些)并返回所有结果的列表。

方法组合结合了所有适用的+主要方法(只有这些)并返回所有结果的总和。

等等。

于 2013-05-28T09:53:17.723 回答