Lua-Variablen
Bevor eine Variable verwendet wird, muss sie im Code deklariert werden, das heißt, die Variable muss erstellt werden.
Bevor Code ausgeführt wird, muss der Compiler wissen, wie er Speicher für Variablen in Anweisungen zuweisen kann, um ihre Werte zu speichern.
Lua-Variablen haben drei Typen: globale Variablen, lokale Variablen und Felder in Tabellen.
Alle Variablen in Lua sind globale Variablen, selbst in Anweisungsblöcken oder Funktionen, sofern sie nicht explizit mit `local` als lokale Variablen deklariert werden.
Der Gültigkeitsbereich einer lokalen Variablen reicht von der Position ihrer Deklaration bis zum Ende des Anweisungsblocks, in dem sie sich befindet.
Der Standardwert von Variablen ist nil.
Beispiel
a = 5 -- Globale Variable
local b = 5 -- Lokale Variable
function joke()
c = 5 -- Globale Variable
local d = 6 -- Lokale Variable
end
joke()
print(c,d) --> 5 nil
do
local a = 6 -- Lokale Variable
b = 6 -- Lokale Variable neu zuweisen
print(a,b); --> 6 6
end
print(a,b) --> 5 6
Das Ausführen des obigen Beispiels erzeugt die folgende Ausgabe:
$ lua test.lua 5 nil 6 6 5 6
Zuweisungsanweisung
Die Zuweisung ist die grundlegendste Möglichkeit, den Wert einer Variablen und ein Tabellenfeld zu ändern.
a = "hello" .. "world" t.n = t.n + 1Lua kann Werte gleichzeitig mehreren Variablen zuweisen. Die Elemente der Variablenliste und der Werteliste sind durch Kommas getrennt. Die Werte auf der rechten Seite der Zuweisungsanweisung werden den Variablen auf der linken Seite der Reihe nach zugewiesen.
a, b = 10, 2*x <--> a=10; b=2*x
Wenn Lua auf eine Zuweisungsanweisung trifft, wertet es zuerst alle Werte auf der rechten Seite aus und führt dann die Zuweisungsoperation aus, sodass wir Variablenwerte auf diese Weise vertauschen können:
x, y = y, x -- swap 'x' for 'y' a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
Wenn die Anzahl der Variablen und die Anzahl der Werte nicht übereinstimmen, nimmt Lua immer die Anzahl der Variablen als Grundlage und wendet die folgende Strategie an:
a. 变量个数 > 值的个数 按变量个数补足nil b. 变量个数 < 值的个数 多余的值会被忽略
Beispiel
print(a,b,c) --> 0 1 nil
a, b = a+1, b+1, b+2 -- Wert von b+2 wird ignoriert
print(a,b) --> 1 2
a, b, c = 0
print(a,b,c) --> 0 nil nil
Das letzte obige Beispiel ist eine häufige Fehlersituation. Hinweis: Wenn Sie mehreren Variablen Werte zuweisen möchten, müssen Sie jeder Variablen der Reihe nach einen Wert zuweisen.
a, b, c = 0, 0, 0 print(a,b,c) --> 0 0 0
Mehrfachzuweisungen werden häufig verwendet, um Variablen zu vertauschen oder die Rückgabewerte eines Funktionsaufrufs Variablen zuzuweisen:
a, b = f()
f() gibt zwei Werte zurück, der erste wird a zugewiesen und der zweite wird b zugewiesen.
Sie sollten so weit wie möglich lokale Variablen verwenden. Das hat zwei Vorteile:
- 1. Namenskonflikte vermeiden.
- 2. Der Zugriff auf lokale Variablen ist schneller als auf globale Variablen.
Indizierung
Verwenden Sie eckige Klammern [], um Tabellen zu indizieren. Lua bietet außerdem die .-Operation.
t[i] t.i -- 当索引为字符串类型时的一种简化写法 gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
Beispiel
> site["key"] = "www.example.com"
> print(site["key"])
www.example.com
> print(site.key)
www.example.com