セッタ定義
書式
セッタ定義は以下の形式です。
アクセス制御 setter セッタ名(引数)
...
endsetter
アクセス制御から始まりキーワードsetterが続きキーワードendsetterで終わる定義です。
セッタ名が異なる、またはセッタ名が同じでも引数のクラスが異なるセッタをクラス定義内の任意の場所で任意の数だけ定義することが出来ます。
セッタへの代入がセッタ呼び出しに自動的に変換されます。
セッタ定義はスコープを生成します。
アクセス制御
セッタのアクセスレベルを、キーワードopenかclosedを用いて指定します。
openを指定すると、そのセッタはクラス定義の外部から呼び出すことができます。
closedを指定すると、そのセッタはクラス定義の内部でのみ使えます。
setter
セッタ定義である事を示すキーワードです。アクセス制御の次に指定する必要があります。
セッタ名
キーワードsetterの次にセッタ名を指定します。セッタ名の命名規則は識別子と同じです。
例外的にセッタ名として組み込みクラスの名前を使うことが出来ます。
引数
引数をセッタ名の次に括弧で囲んで指定します。
引数はクラス名と引数名の組です。セッタには一組の引数が必須です。引数の型がセッタに代入できる値の型になります。
引数のクラスでもセッタを区別しているので同名で引数のクラスが異なるセッタを定義できます。
endsetter
セッタ定義の終了を示すキーワードです。
endsetterの代わりに省略形のesを使用できます。esもキーワードであることに注意してください。
例
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: | open setter X(int val) |
13: | x = val; |
14: | endsetter |
15: | open setter Y(int val) |
16: | y = val; |
17: | es // 省略形 |
18: | endclass |
セッタは代入文で呼び出します。
1: | example ex = new example(); |
2: | ex.X = 10; // open setter X(int val) |
3: | ex.Y = 10; // open setter Y(int val) |