Хотя в общем случае это не имеет особого смысла, так как это должно быть сделано через суперклассы, я хочу разрешить «nil» для определенного параметра и избежать необходимости определять отдельный метод.В определениях CLOS-метода может ли специализатор быть списком классов, а не одним классом?
Я пытаюсь сделать что-то вроде этого (псевдо-код)
(defmethod my-method ((obj1 my-class1) (obj2 (or my-class2 null)))
method-body )
Во избежание многократного дублирования кода вы можете [1] написать макрос, который пишет кучу defmethods, или [2] использовать надписи над шаблоном defmethod; сохранить код метода внутри функции меток, а затем определить несколько методов, которые могут получить доступ к этой функции (закрытие defmethod) –