フィッタ定義
書式
フィッタ定義は以下の形式です。
アクセス制御 fitter クラス名(引数)
...
endfitter
アクセス制御から始まりキーワードfitterが続きキーワードendfitterで終わる定義です。
フィッタの名前はクラス名と同じである必要があります。
引数の組み合わせが異なるフィッタをクラス定義内の任意の場所で任意の数だけ定義することが出来ます。
フィッタ定義はスコープを生成します。
アクセス制御
フィッタのアクセスレベルを、キーワードopenかclosedを用いて指定します。
openを指定すると、そのフィッタはクラス定義の外部から呼び出すことができます。
closedを指定すると、そのフィッタはクラス定義の内部でのみ使えます。
fitter
フィッタ定義である事を示すキーワードです。アクセス制御の次に指定する必要があります。
クラス名
キーワードfitterの次にクラス名を指定します。定義中のクラス名と同じでなければいけません。
引数
フィッタの引数をクラス名の次に括弧で囲んで指定します。
引数はクラス名と引数名の組です。
二つ以上の引数があるときはカンマで区切って指定します。引数が一つのときはカンマは必要ありません。引数が無いときは括弧の中は空です。
引数のクラスの並び順でフィッタを区別しているので引数の並び順が異なるフィッタを定義できます。
endfitter
フィッタ定義の終了を示すキーワードです。
endfitterの代わりに省略形のefを使用できます。efもキーワードであることに注意してください。
デフォルトフィッタ
引数の無いフィッタをデフォルトフィッタと呼びます。ユーザが定義したデフォルトフィッタがある場合は、それが呼び出されます。
ユーザが定義したデフォルトフィッタがない場合は、デフォルトフィッタが自動的に生成されて呼び出されます。
自動的に生成されるデフォルトフィッタが返すインスタンスは、そのクラスの変数が宣言された場合と同じです。
例
exampleクラスにフィッタを定義します。
1: | class example |
2: | int x; |
3: | int y; |
4: | open fitter example() // デフォルトフィッタ。 |
5: | x = 0; |
6: | y = 0; |
7: | endfitter |
8: | open fitter example(int xx, int yy) // 引数二つのフィッタ。 |
9: | x = xx; |
10: | y = yy; |
11: | ef // 省略形 |
12: | endclass |
フィッタはnew式で呼び出します。
1: | example ex = new example(10, 10); |