Lua-変数
変数は、プログラムが操作できるストレージ領域に付けられた名前に他なりません。関数やテーブルなど、さまざまなタイプの値を保持できます。
変数の名前は、文字、数字、および下線文字で構成できます。文字またはアンダースコアで始まる必要があります。Luaでは大文字と小文字が区別されるため、大文字と小文字は区別されます。Luaには8つの基本的な値のタイプがあります-
Luaには変数データ型はありませんが、変数のスコープに基づいて3つの型があります。
Global variables −ローカルとして明示的に宣言されていない限り、すべての変数はグローバルと見なされます。
Local variables −型が変数のローカルとして指定されている場合、そのスコープはスコープ内の関数で制限されます。
Table fields −これは、関数を含む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での値の割り当ては、variable_listの最初の変数と、value_listの最初の値のように行われます。したがって、dの値は5で、fの値は10です。
例
次の例を試してください。変数は上部で宣言されていますが、main関数内で定義および初期化されています-
-- 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−メモリ位置を参照する式は「左辺値」式と呼ばれます。左辺値は、割り当ての左側または右側のいずれかとして表示される場合があります。
rvalue−右辺値という用語は、メモリ内のあるアドレスに格納されているデータ値を指します。右辺値は、値を割り当てることができない式です。つまり、右辺値は割り当ての左側には表示されませんが、右側には表示されます。
変数は左辺値であるため、割り当ての左側に表示される場合があります。数値リテラルは右辺値であるため、割り当てられない場合があり、左側に表示することはできません。以下は有効なステートメントです-
g = 20
しかし、以下は有効なステートメントではなく、ビルド時エラーを生成します-
10 = 20
Luaプログラミング言語では、上記のタイプの割り当てとは別に、同じ1つのステートメントに複数の左辺値と右辺値を含めることができます。以下に示します。
g,l = 20,30
上記のステートメントでは、20がgに割り当てられ、30がlに割り当てられています。