Lua-variables
Lua-変数
変数は、プログラムが操作できるストレージ領域に付けられた名前に他なりません。 関数やテーブルなど、さまざまなタイプの値を保持できます。
変数の名前は、文字、数字、およびアンダースコア文字で構成できます。 文字またはアンダースコアで始まる必要があります。 Luaでは大文字と小文字が区別されるため、大文字と小文字は区別されます。 Luaの値の8つの基本的なタイプがあります-
Luaでは、変数のデータ型はありませんが、変数のスコープに基づいて3つの型があります。
- グローバル変数-ローカルとして明示的に宣言されていない限り、すべての変数はグローバルと見なされます。
- ローカル変数-型が変数のローカルとして指定されている場合、スコープはスコープ内の関数で制限されます。
- テーブルフィールド-これは、関数を含むnil以外のすべてを保持できる特別なタイプの変数です。
Luaの変数定義
変数定義とは、変数のストレージを作成する場所と量をインタープリターに伝えることです。 変数定義にはオプションのタイプがあり、次のようにそのタイプの1つ以上の変数のリストが含まれています-
type variable_list;
ここで、 type はオプションでローカルまたは指定されたタイプでグローバルになり、 variable_list はコンマで区切られた1つ以上の識別子名で構成されます。 いくつかの有効な宣言がここに示されています-
local i, j
local i
local a,c
行 local i、j は、変数iとjを宣言および定義します。これは、インタープリターにi、jという名前の変数を作成するように指示し、スコープをローカルに制限します。
変数は、宣言で初期化(初期値を割り当て)できます。 初期化子は、等号とそれに続く定数式で構成されます-
type variable_list = value_list;
いくつかの例は-
local d , f = 5 ,10 --declaration of d and f as local variables.
d , f = 5, 10; --declaration of d and f as global variables.
d, f = 10 --[[declaration of d and f as global variables.
Here value of f is nil --]]
初期化子なしの定義の場合:静的ストレージ期間を持つ変数は、nilで暗黙的に初期化されます。
Luaの変数宣言
上記の例でわかるように、複数変数の割り当ては、variable_listおよびvalue_listの形式に従います。 上記の例 local d、f = 5,10 では、variable_listにdとfがあり、valuesリストに5と10があります。
Luaでの値の割り当ては、value_listの最初の値を持つvariable_listの最初の変数のように行われます。 したがって、dの値は5で、fの値は10です。
例
次の例を試してください。変数は上部で宣言されていますが、メイン関数内で定義および初期化されています-
-- Variable definition:
local a, b
-- Initialization
a = 10
b = 30
print("value of a:", a)
print("value of b:", b)
-- Swapping of variables
b, a = a, b
print("value of a:", a)
print("value of b:", b)
f = 70.0/3.0
print("value of f", f)
上記のコードをビルドして実行すると、次の結果が生成されます-
value of a: 10
value of b: 30
value of a: 30
value of b: 10
value of f 23.333333333333
Luaの左辺値と右辺値
Luaには2種類の式があります-
- lvalue -メモリ位置を参照する式は「lvalue」式と呼ばれます。 左辺値は、割り当ての左辺または右辺として表示される場合があります。
- rvalue -rvalueという用語は、メモリ内のあるアドレスに格納されているデータ値を指します。 右辺値は値を割り当てることができない式です。つまり、右辺には右辺が表示されますが、左辺には表示されない場合があります。
変数は左辺値であるため、割り当ての左側に表示される場合があります。 数値リテラルは右辺値であるため、割り当てられず、左側に表示されることはありません。 以下は有効なステートメントです-
g = 20
しかし、次は有効なステートメントではなく、ビルド時エラーを生成します-
10 = 20
Luaプログラミング言語では、上記のタイプの割り当てとは別に、同じ単一のステートメントに複数の左辺値と右辺値を含めることができます。 以下に示します。
g,l = 20,30
上記のステートメントでは、gに20が割り当てられ、lに30が割り当てられています。