総称関数をシーリング宣言する

(Declaring sealing of generic functions)

総称関数定義(関数については前章を見よ)は sealedまたはopenという修飾子を含むことができる。 これらの修飾子は総称関数がシールドかどうかを宣言する。

総称関数がシールドの時、同じライブラリ(library)明示的に定義されたものを 除き、その総称関数にメソッドをさらにつけ加えることはできない。したがって、シールド 総称関数を定義しているものとは別のライブラリでシールド総称関数のメソッドを 定義したり、add-methodremove-methodをシールド総称関数に対して 適用しようとするとエラーとなる。オープン総称関数ではこのような操作を禁止しない。

総称関数を明示的に定めるとき、デフォルトではその総称関数はシールドになる。 明示的にオープンであると指定すれば、これを上書きできる。明示的定義は持たないが 総称関数メソッドの提供する明示的定義により暗黙に定められた総称関数は シールドとなる。<generic-function>makeを用いて作成された 総称関数はオープンである。makeを用いてシールド総称関数を作成する定まったやり方は ない。

◆明示的定義と暗黙的定義の違いについては モジュールの章の概観の節を参照せよ。

目次 索引 ダイナミズムの制御(章見出し)、 seal generic式 (次節)