<type>, <class>, <singleton> クラス、

(The classes <type>, <class>, and <singleton>)

<type>     [Abstract Class]
(<type><class>を含む)すべての型は<type>の 一般インスタンスである。<type><object>の部分クラスである。
<class>    [Abstract Instantiable Class]
(<class>を含む)すべてのクラスは<class>の一般インスタンス である。<class><type>の部分クラスである。

多くのプログラムでは大部分のクラスがdefine classにより作成される。しかしながら、 例えば、モジュール変数に格納せずにクラスを作りたいといった場合、また、実行時に新しい クラスを作りたいといった場合に、プログラマがmakeを呼んでクラスを作成することを 妨げるものは何もない。

もしも新しいクラスを作るのにmakeが使われ、その新クラス生成がシーリング指定 (sealing directives)の制限を破っているなら<sealed-object-error>型の エラーが発信される。

<class>クラスは次の初期化キーワードをサポートしている。

superclasses:
そのクラスの直接上位クラスを指定する。superclasses:は クラスまたはクラスの列でなければならない。デフォルト値は<object>である。 上位クラスの順序の意味はdefine classの時に同じ。

slots:
スロット指定の列で、各スロット指定はキーワード/値の組の列である。

以下のキーワードとそれに対応する値はすべての処理系で受理される。処理系はさらに、 スロット指定の中で使うキーワードと値を追加できる。

getter:
1引数の取得総称関数。スロットの割り付けが仮想でない限り、スロットの取得メソッドが この総称関数に加えられる。このオプションは必須である。

setter:
2引数の総称関数。スロットの割り付けが仮想でない限り、スロットの設定メソッドが この総称関数に加えられる。デフォルト値はない。

type:
型。スロットに格納される値はこの型に制限される。このオプションのデフォルト値は <object>である。

deferred-type:
引数なしのの関数。この関数は型を返す。そのクラスの最初のインスタンスを作る makeの呼び出しの中でスロットの型を計算するために一度呼ばれる。

init-value:
そのスロットのデフォルトの初期値を与える。このオプションはinit-function: とともに指定することはできない。デフォルトはない。

init-function:
引数なしの関数。この関数は新しいインスタンスが作られる時そのスロットの初期値を 生成するために呼ばれる。このオプションはinit-value:とともに指定することは できない。デフォルトはない。

init-keyword:
キーワード。このオプションはこのキーワードを用いたキーワード引数として、その スロットの初期値がmakeに渡されることを許す。デフォルトはない。このオプションは required-init-keyword:と共に指定することはできない。

required-init-keyword:
キーワード。このオプションは、クラス初期化の際に必ず提供しなければならない init-keywordを表しているという点を除けば、init-keyword:と同様である。 もしも、必須のinit-keywordなしにmakeが呼び出されると、エラーとなる。 デフォルトはない。init-keyword:, init-value:または init-function:が指定されているときにはこのオプションは指定できない。

allocation:
instance:, class:,each-subclass:, constant:, virtual:または処理系定義のキーワードのいずれか。このオプションの意味は define class式に、対応する 修飾子(adjective)を加えることと同じである。

<singleton>	  [Instantiable Class]
<singleton>クラスは次の初期化キーワードをサポートしている。

object:
そのsingletonが表すオブジェクトを指定する。この引数にはデフォルト値はなく、 値を与えないとエラーになる。

指定されたオブジェクトのシングルトンが既に存在するなら、処理系は2つのインスタンスを 1つにまとめても構わない。

singleton object => singleton   [Function]
singletonobjectのシングルトンを返す。

singleton(object)make(<singleton>, object: object)と同値である。


目次 索引 クラス(章見出し)、 ダイナミズムの制御 (次章)