7.6.6.1.3. ソートされた適用可能なメソッドのMethod-Combination実行
単純な場合として、method-combinationはstandard
が使われており、 全ての適用可能なメソッドはプライマリメソッドであるとします。 この場合は、有効メソッドは最も特定的なメソッドとなります。 メソッドは、次に特定的なメソッドを関数call-next-method
の使用にて呼び出すことができます。 call-next-method
によって呼び出されるメソッドは、次のメソッドと言います。 関数next-method-p
は、次のメソッドが存在するかどうかをテストします。 もしcall-next-method
が呼ばれたものの、次の特定的なメソッドが存在しなかった場合は、 ジェネリック関数no-next-method
が呼び出されます。
一般的に、有効なメソッドは、適用可能なメソッドを組み合わせた結果のいくつかとなります。 これは次に記載されたような目的によりフォームとして定義されます。 適用可能なメソッドは、いくつかが呼ばれるか、あるいは全部が呼ばれるかを定義します。 また、返却値は1つか複数が返却されるように定義します。 その返却値はジェネリック関数として返却されるものです。 付加的にはいくつかのメソッドがcall-next-method
を用いてアクセス可能になるように定義します。
有効なメソッドにおける各メソッドの役割は、 メソッドの修飾子と特定子によって決定されます。 修飾子はメソッドに印をつけるものであり、 修飾子の意味は手続きにおいて印を用いることで決定されます。 もし適用可能なメソッドが認識できない修飾子を持っていた場合はエラーを発し、 有効なメソッドの中にこのメソッドが存在しないものとします。
method-combinationのstandard
が限定されたメソッドと一緒に使われたときは、 有効なメソッドは7.6.6.2. Standard Method-Combinationに記載されたものとして生成されます。
他のタイプのmethod-combinationは、defgeneric
かあるいは別のオペレーターで ジェネリック関数のオプション:method-combination
を使うことで使用できます。 この方法により、手順をカスタマイズできます。
新しいタイプのmethod-combinationは、 define-method-combination
マクロを使うことによって定義することができます。