値および型
Lua は、動的に型付けされる言語 です。つまり、変数は型を持たず、値だけが型を持ちます。この言語に型定義がありません。すべての値は、値自体が型を保持しています。
Lua のすべての値はファースト・クラスの値 です。つまり、すべての値は変数に格納でき、 他の関数に引数として渡すことができ、戻り値として返すことができます。
nzLua には、NULL、ブール、数値、ストリング、関数、および表 の、6 つの基本型があります。
NULL は、null 値の型で、 その主な性質は他のいかなる値とも異なることであり、通常、有用な値がないことを表します。Lua コマンド解析機能は、 キーワード null が標準 Lua キーワードのnil に相当するよう、nzLua 向けに拡張されました。SQL の NULL 値と異なり、null (および nil) はそれ自体と等しく、 そのため、null == null は true を返します。
ブール は、false と true の値を持つ型です。null とfalse は、両方とも条件判断は false になり、他の値は true になります。
数値 は実数 (倍精度浮動小数点数) を表します。
ストリング は文字の配列を表します。Lua は 8 ビット・クリーンです。ストリングには、埋め込みゼロ (「\0」) も含めて、すべての 8 ビット文字を含めることができます。
表 型は、連想配列を実装します。すなわち、数値だけでなく任意の値 (null を除く) で
順にインデックス付けできる配列です。表は異種混合にできます。すなわち、すべての型の値 (null を除く) を含めることができます。表は、Lua の唯一のデータ構造機構であり、
通常の配列、記号表、集合、レコード、グラフ、ツリーなどの表現に使用できます。レコードを表現するために、Lua ではフィールド名をインデックスとして使用します。言語では、a["name"]の糖衣構文として a.name を提供することで、この表現をサポートします。Lua で表を作成するためのいくつかの便利な方法があります (『表コンストラクター』を参照)。
インデックスと同様に、表フィールドの値は、任意の型 (null を除く) にできます。特に、関数がファースト・クラスの値であるため、表フィールドには関数を含めることができます。したがって、表はメソッド も保持できます (『関数定義』を参照)。
表の値と関数の値はオブジェクト です。変数は実際にはこれらの値を持たず、 それらを参照 しているだけです。代入、パラメーターの引き渡し、および関数からの戻りは、 常にそのような値への参照を扱います。これらの操作ではどのようなコピーも行われません。