Lua-variables

提供:Dev Guides
移動先:案内検索

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が割り当てられています。