Luaの変数
使用前に変数は、変数を作成したコード内で宣言する必要があります。
コンパイラのコードコンパイラを実行する前に変数の値を格納するためのステートメントの変数のメモリ領域を開放する方法を知っている必要があります。
グローバル変数、ローカル変数、テーブルフィールド:Luaの変数には3種類があります。
地元でLuaのすべてのグローバル変数の変数、または関数内のステートメントの偶数ブロックは、明示的にローカル変数として宣言しない限り。
ローカル変数のスコープはどこで文ブロックの終了位置から開始することです。
変数のデフォルト値はゼロです。
-- test.lua 文件脚本 a = 5 -- 全局变量 local b = 5 -- 局部变量 function joke() c = 5 -- 全局变量 local d = 6 -- 局部变量 end joke() print(c,d) --> 5 nil do local a = 6 -- 局部变量 b = 6 -- 全局变量 print(a,b); --> 6 6 end print(a,b) --> 5 6
上の例の出力は実行します。
$ lua test.lua 5 nil 6 6 5 6
割り当て
割り当ては、変数の値を変更し、基本的な方法のテーブル項目を変更することです。
a = "hello" .. "world" t.n = t.n + 1Luaは、同時に複数の変数を割り当てることができ、変数のリストと、カンマで区切られた各要素の値のリストは、左側の変数に割り当てられた順番に代入文の右辺の値。
a, b = 10, 2*x <--> a=10; b=2*x
Luaは割り当てが最初の右側にあるすべての値を計算し、次に割り当てを実行するので、私たちはこの変数の値を交換することができます発生しました:
x, y = y, x -- swap 'x' for 'y' a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
変数と値の数の数が矛盾しているとき、Luaは変数の数は以下の戦略に基づいて撮影されている次のようになります。
a. 变量个数 > 值的个数 按变量个数补足nil b. 变量个数 < 值的个数 多余的值会被忽略
例えば:
a, b, c = 0, 1 print(a,b,c) --> 0 1 nil a, b = a+1, b+1, b+2 -- value of b+2 is ignored print(a,b) --> 1 2 a, b, c = 0 print(a,b,c) --> 0 nil nil
上記の最後の例は、一般的なエラー条件です。注:あなたは複数の変数を割り当てる場合は、順次各変数に割り当てる必要があります。
a, b, c = 0, 0, 0 print(a,b,c) --> 0 0 0
多くの場合、変数に戻るには、変数値の代入や関数呼び出しを交換するために使用:
a, b = f()
fは()第二は、Bに割り当てられ、最初の1が割り当てられている、2つの値を返します。
ローカル変数を使用することが可能であるべき、2つの利点があります。
- 1.名前の競合を避けてください。
- グローバル変数よりも速い2.ローカル変数。
インデックス
角括弧[]を使用してテーブルのインデックス。 Luaはまた、動作しています。
t[i] t.i -- 当索引为字符串类型时的一种简化写法 gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
例えば:
> site = {} > site["key"] = "www.w3cschool.cc" > print(site["key"]) www.w3cschool.cc > print(site.key) www.w3cschool.cc