変数
変数は値を格納する場所です。 Lua には、グローバル変数、ローカル変数、表フィールドの 3 種類の変数があります。
var ::= Name
名前は識別子を示す。
明示的にローカル変数として宣言されない限り、どの変数もグローバル変数とみなされます。 ローカル変数は辞書的にスコープされます。ローカル変数は、そのスコープ内で定義された関数から自由にアクセスすることができます。
最初の代入が行われる前の変数の値は null です。
var ::= prefixexp `[´ exp `]´
var.Name は var["Name"] の単なる糖衣構文です。var ::= prefixexp `.´ Name
すべてのグローバル変数は、環境表 または単に環境 と呼ばれる、通常の Lua 表内のフィールドとして存在します。 各関数はそれぞれ環境テーブルへの参照を持っているので、この関数内のすべてのグローバル変数はこの環境テーブルを参照することになる。 関数が作成されるとき、関数は、その関数を作成した関数から環境を継承します。 Lua 関数の環境表を取得するには、getfenv を呼び出します。 環境表を置き換えるには、setfenv を呼び出します。
グローバル変数 x へのアクセスは、_env.x と同等です。ここで、_env は実行する関数の環境です。 (_env 変数は Lua ではアクセス可能ではありません。 それをここで使用したのは説明のためだけです。)