1

スーパークラスを介して実行する必要があるため、一般的なケースではあまり意味がありませんが、特定のパラメーターに「nil」を許可し、別のメソッドを定義する必要がないようにします。

私はそのようなことをしようとしています(擬似コード)

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

2 に答える 2

3

これはプレーンな CLOS ではサポートされていません。

サポートされているのは次のとおりです。

  • クラスなし -> T
  • EQL
  • 1クラス
于 2012-04-04T09:42:25.923 に答える
0

スロットのない mixin クラスを作成し、それを対象のすべてのクラスのスーパークラス リストに追加できます。あなたがしていることは、リスト内のすべてのクラスが何らかの型に準拠していることを意味するため、これは理にかなっています。

または、特化しないでください。関心のあるタイプのスーパーセットに適用できるメソッドを作成しますが、サブセットに対してのみ機能します。これは簡単かもしれませんが、きれいではありません。

于 2015-06-03T00:58:52.223 に答える