虽然它在一般情况下没有多大意义,因为它应该通过超类来完成,但我希望允许“nil”用于特定参数并避免必须定义单独的方法。
我正在尝试做类似的事情(伪代码)
(defmethod my-method ((obj1 my-class1) (obj2 (or my-class2 null)))
method-body )
答案 0 :(得分:3)
普通CLOS不支持此功能。
支持:
答案 1 :(得分:0)
您可以创建一个没有插槽的mixin类,并将其添加到所有感兴趣的类的超类列表中;这是有道理的,因为你所做的事情意味着列表中的所有类都符合某种类型。
或者不要专门化 - 编写适用于感兴趣类型的超集的方法,但仅对您的子集起作用。这可能更容易,但不太干净。