local - モジュールの局所変数
使い方
local loc1, loc2, ...;
パラメータ
loc1, loc2, ... - 1 個以上の局所変数名、または型の指定された変数
|
説明
|
|
•
|
モジュール定義の先頭部分には、1個以上の局所変数の宣言を含んでいても構いません。これらの局所変数は手続きにおける局所変数と全く同じものです。それぞれの式 loci(i=1,2,...) は symbol であるか、 `::` を用いた式でなければなりません。第1オペランド(変数名)は、 symbol 型の変数です。 局所変数が `::` を用いて宣言された場合には、kernelopts( 'assertlevel' ) の値が 2 以上になっていない限り、 型がチェックされることになります。
|
•
|
局所変数として拘束されている変数は、それを宣言しているモジュール定義の本体中では見ることができるが、その外部からは見ることができません。 エクスポート変数のように( :- を使って)アクセスしようとしても、エラーになるだけです。
|
•
|
局所変数は、それを拘束しているモジュールの定義を実行するために、一意的に存在しています。モジュール定義が実行されるたびに、新しい局所変数の集合が生成されるのです(定義の実行は評価計算の一部なのです)。
|
•
|
モジュールの局所変数の評価規則は、手続きの局所変数の評価規則と同じです(詳細については eval を参照して下さい)。
|
•
|
モジュール内の局所変数をアクセスしたいならば、局所変数の値を調べたり修正したりするためのエクスポート変数を用意すると良いでしょう。 注意: 局所変数がモジュールから「解放」される様子は、手続きから局所変数が解放される場合と同じになります。
|
|
|
例
|
|
>
|
m := module()
local loc1;
export setter, getter;
loc1 := 2;
getter := proc() loc1 end proc;
setter := proc( v ) loc1 := v end proc;
end module:
m:-getter();
|
| (2.1) |
>
|
m:-loc1; # no direct access to loc1
|
Error, module does not export `loc1`
| |
>
|
m:-setter( 5 ); # loc1 can be accessed indirectly
|
| (2.2) |
>
|
m:-getter(); # and here
|
| (2.3) |
|
|
Download Help Document
Was this information helpful?