Home About Rice Downloads Documents Others Cooker CookerGX
Documents  >  Tutorial  >  fitters
フィッタ

この章の目的。

クラス定義を構成する基本要素である、フィッタについて学びます。

フィッタ

フィッタは、クラスのインスタンスが生成される際の初期化方法の指定です。

まず、Circle.88のフィッタ定義部分を以下に示します。

1:

// -----------------------------------------------fitters.

2:

open fitter Circle(int radius)

3:

_radius.Value = radius; // Encapsulation.

4:

_box = _doc.GetElementById("box");

5:

_hor = 1;

6:

_ver = -1;

7:

_tt = new timer(this, "timerHandler(timer)", 10);

8:

_fitted = true;

9:

endfitter

フィッタ定義は、以下の形式をしています。


アクセス制御(open か closed) fitter フィッタ名 ( 引数... )

フィッタ定義の文...

endfitter


フィッタ定義は、アクセス制御から始まり、キーワードfitterが続き、キーワードendfitterで終わる定義です。

フィッタの名前は、クラス名と同じである必要があります。

フィッタは、引数の違いで区別されます。異なるフィッタならば、他のメンバー定義の外の任意の場所で、いくつでも宣言することが出来ます。

アクセス制御

フィッタのアクセスレベルを、キーワードopenかclosedを用いて指定します。

openを指定すると、そのフィッタは、プログラムのどこでも使えます。

closedを指定すると、そのフィッタは、クラス定義の内部でのみ使えます。

クラス定義の内部では、そのクラスの全てのインスタンスのclosedメンバにアクセス出来ます。

キーワード fitter

この定義が、フィッタの定義である事を示すキーワードです。アクセス制御の次に指定する必要があります。

フィッタ名

キーワードfitterの次にフィッタ名を指定します。フィッタ名は、このフィッタが所属するクラスと同じである必要があります。

引数

フィッタの引数を、フィッタ名の次に括弧で囲んで指定します。

引数は、クラス名(引数の型)と引数名の組です。

二つ以上の引数があるときは、引数ををカンマで区切って指定します。引数が一つのときは、カンマは必要ありません。引数が無いときは、括弧の中は空です。

Riceは、引数の型の並び順でフィッタを区別します。引数の並び順が異なるフィッタなら、いくつでも定義できます。

Riceは、フィッタ名と引数から、フィッタを呼び出すための名前を作成します。

例えば、

open fitter A() -> "A()"

open fitter A(int val) -> "A(int)"

closed fitter A(int iVal, string sVal) -> "A(int,string)"


アクセス制御は、この名前の生成に関係しないことに注意してください。

キーワード endfitter

フィッタ定義の終了を示すキーワードです。

デフォルトフィッタ

引数の無いフィッタをデフォルトフィッタと呼びます。ユーザが定義したデフォルトフィッタがある場合は、デフォルトフィッタの呼び出しは、そのデフォルトフィッタが呼び出されます。

ユーザが定義したデフォルトフィッタがない場合は、デフォルトフィッタが自動的に生成されます。この場合、デフォルトフィッタの呼び出しは、自動的に生成されたデフォルトフィッタが呼び出されます。

自動的に生成されるデフォルトフィッタが返すインスタンスは、そのクラスの変数が宣言された場合に返されるインスタンスと同じです。つまり、適切に初期化されていない可能性があります。

Copyright © Rice All rights reserved.