7.6.4. ジェネリック関数の全てのメソッドのラムダリストの合意

UP


7.6.4. ジェネリック関数の全てのメソッドのラムダリストの合意

下記に示すこれらの定義は、ラムダリストの集合の合意を定義します。 ラムダリストには、指定したジェネリック関数の各メソッドのラムダリストと、 ジェネリック関数自身で定義されたラムダリストを含みます。

  1. 各ラムダリストは、同じ数の要求パラメーターを持つ必要があります。

  2. 各ラムダリストは、同じ数の&optionalパラメーターを持つ必要があります。 各メソッドは、&optionalパラメーターに独自のデフォルト値を提供することができます。

  3. もしどれかのラムダリストが&rest&keyを持つなら、 各ラムダリストはそのうちの1つか両方を指定する必要があります。

  4. もしジェネリック関数のラムダリストが&keyを持つなら、 各メソッドは&keyの後の全てのキーワードの名前を受け付けるようにする必要があります。 受け付ける方法は、全ての名前を明に指定する方法、 あるいは&allow-other-keysを指定する方法がありますが、 &keyの指定ではなく&restを指定する方法でも問題ありません。 各メソッドは、独自のキーワード引数を追加で受け付けることができます。 キーワードの名前の有効性のチェックはジェネリック関数が行い、各メソッドでは行いません。 メソッドが実行されたときには、キーワード引数に名前が:allow-other-keys、 値がtrueであるペアが与えられたように呼び出されますが、 そのような引数のペアは渡されません。

  5. &allow-other-keysの使用は、ラムダリスト間で一貫している必要はありません。 もし&allow-other-keysがジェネリック関数か適用メソッドのラムダリストに指定されている場合、 ジェネリック関数が呼び出されるときには、どんなキーワード引数も受け付けるでしょう。

  6. &auxの使用は、メソッド間で一貫している必要はありません。

もしジェネリック関数のオプションを指定できないメソッド宣言オペレーターが ジェネリック関数を作成した場合、 さらにメソッドのラムダリストにキーワードパラメーターが指定されている場合は、 ジェネリック関数のラムダリストには&keyが指定されます(しかしキーワード引数は指定されない)。


TOP, Github