1

虽然它在一般情况下没有多大意义,因为它应该通过超类完成,但我想允许特定参数为“nil”并避免必须定义一个单独的方法。

我正在尝试做类似的事情(伪代码)

(defmethod my-method ((obj1 my-class1) (obj2 (or my-class2 null)))
   method-body       )
4

2 回答 2

3

这在普通 CLOS 中不受支持。

支持的是:

  • 没有课-> T
  • 情商
  • 一类
于 2012-04-04T09:42:25.923 回答
0

您可以创建一个没有插槽的 mixin 类,并将其添加到所有感兴趣的类的超类列表中;这是有道理的,因为您所做的意味着列表中的所有类都符合某种类型。

或者不要专门化 - 编写一个适用于感兴趣类型的超集但仅作用于您的子集的方法。这可能更容易做到,但不太干净。

于 2015-06-03T00:58:52.223 回答