変数とスコープ
変数の宣言
= で現在のスコープに変数を宣言します.
x = 1;
上のコードでは,変数 x に 1 を代入しています.変数名には ASCII 記号 (アンダースコア除く) を含まない任意の文字列を使うことができます.
スコープ
同一スコープ内で宣言が重複すると,変数は上書きされます.下の例では x が 5 を指します.
x = 1;
x = 5;
println x; // 5
{} はスコープを形成します.内側のスコープで宣言された変数は外側で参照できません.
{
x = 1;
};
println x; // ()
注記
() は空オブジェクトです
外側のスコープで宣言された変数は内側で参照できます.
x = 1;
{
println x; // 1
};
内側のスコープで宣言した変数と同名の変数が外側に存在する場合,外側の変数は隠蔽されます.上書きはされません.
x = 1;
{
x = 5;
println x; // 5
};
println x; // 1
外側の変数を上書きする
外側にある変数を内側のスコープで書き換えるには,:: で外側のスコープをオブジェクトとして取得します.
x = 1;
{
:: .x = 5;
println x; // 5
};
println x; // 5