7.6.5. ジェネリック関数とメソッドのキーワード引数
ジェネリック関数かそのメソッドがラムダリストに&key
を指定しているとき、 ジェネリック関数によって受け取れるキーワード引数の集合の定義は、 適用可能なメソッドによって変化します。 ある呼び出しにおいてジェネリック関数が受け取れるキーワード引数の集合とは、 適用可能な全てのメソッドによって受け取ることができるキーワード引数と、 ジェネリック関数に&key
があるならば&key
以降に示されるキーワード引数の集合です。 &key
の指定が無く、&rest
の指定があるメソッドは、 受け付けるキーワード引数の集合には影響しません。 もし適用可能なメソッドのどれかのラムダリストか、 あるいはジェネリック関数の宣言によるラムダリストが&allow-other-keys
を含んでいる場合は、 そのジェネリック関数は全てのキーワード引数を受け取ります。
ラムダリスト一致の規則は、 各メソッドが次のような全てのキーワード引数を受け付けるようにすることを要求します。 それは、ジェネリック関数の定義において&key
の後に指定したものを明に受け取れるようにするか、 &allow-other-keys
を指定するか、あるいは&key
が無い場合に&rest
を設定するかになります。 各メソッドは、ジェネリック関数の定義にあるキーワード引数に加えて、 独自のキーワード引数を追加で受け取るようにすることができます。
もしジェネリック関数は、渡されたキーワード引数がどの適用メソッドにも受け付けられなかった場合は、 エラーを発する必要があります。3.5. 関数呼び出しのエラーチェックを参照。