3.2 – 変数

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

単一の名前は、グローバル変数またはローカル変数(あるいは、ローカル変数の一種である関数の仮引数)を表せる(§2.2を参照)。

	var ::= Name

Nameは識別子を表す(§3.1を参照)。

変数はレキシカルスコープを持つため、ローカル変数のスコープ内で定義された関数は、そのローカル変数へ自由にアクセスできる(§2.2を参照)。

変数へ最初に代入する前、その値はnilである。

テーブルのインデックス指定には角括弧を使用する。

	var ::= prefixexp ‘[’ exp ‘]’

テーブルフィールドへのアクセスの意味は、メタテーブルを介して変更できる(§2.4を参照)。

構文var.Nameは、単にvar["Name"]の構文糖である。

	var ::= prefixexp ‘.’ Name

グローバル変数xへのアクセスは、_ENV.xと等価である。