変数

変数は値を格納する場所です。 Lua には、グローバル変数、ローカル変数、表フィールドの 3 種類の変数があります。

単一の名前は、グローバル変数またはローカル変数 (あるいは、ある特定のローカル変数である、関数の仮パラメーター) を表すことができます。
var ::= Name

名前は識別子を示す。

明示的にローカル変数として宣言されない限り、どの変数もグローバル変数とみなされます。 ローカル変数は辞書的にスコープされます。ローカル変数は、そのスコープ内で定義された関数から自由にアクセスすることができます。

最初の代入が行われる前の変数の値は null です。

表にインデックスを付けるためには、角括弧が使用されます。
var ::= prefixexp `[´ exp `]´
構文 var.Namevar["Name"] の単なる糖衣構文です。
var ::= prefixexp `.´ Name

すべてのグローバル変数は、環境表 または単に環境 と呼ばれる、通常の Lua 表内のフィールドとして存在します。 各関数はそれぞれ環境テーブルへの参照を持っているので、この関数内のすべてのグローバル変数はこの環境テーブルを参照することになる。 関数が作成されるとき、関数は、その関数を作成した関数から環境を継承します。 Lua 関数の環境表を取得するには、getfenv を呼び出します。 環境表を置き換えるには、setfenv を呼び出します。

グローバル変数 x へのアクセスは、_env.x と同等です。ここで、_env は実行する関数の環境です。 (_env 変数は Lua ではアクセス可能ではありません。 それをここで使用したのは説明のためだけです。)