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