English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Bevor eine Variable verwendet wird, muss sie im Code deklariert werden, d.h. die Variable wird erstellt.
Bevor ein Compiler die Ausführung eines Programms ausführt, muss er wissen, wie er Speicherbereiche für die Variablen zuweisen kann, um die Werte der Variablen zu speichern.
Lua-Variablen gibt es in drei Typen: globale Variablen, lokale Variablen und Felder in Tabellen.
In Lua sind alle Variablen globale Variablen, selbst wenn es sich um einen Satzbereich oder eine Funktion handelt, es sei denn, sie werden durch local explizit als lokale Variablen deklariert.
Der Geltungsbereich lokaler Variablen erstreckt sich vom Deklarationspunkt bis zum Ende des zugewiesenen Satzbereichs.
Die Standardwerte der Variablen sind alle nil.
-- Skriptdatei test.lua a = 5 -- globale Variablen local b = 5 -- lokale Variablen function joke() c = 5 -- globale Variablen local d = 6 -- lokale Variablen end joke() print(c, d) --> 5 nil do local a = 6 -- lokale Variablen b = 6 -- Neu zuweisung von lokalen Variablen print(a, b); --> 6 6 end print(a,b) --> 5 6
Das Ausführen des obigen Beispiels führt zu folgendem Ausgabeergebnis:
$ lua test.lua 5 nil 6 6 5 6
Zuweisungen sind die grundlegendsten Methoden, um den Wert einer Variable und den Wert eines Tabelfelds zu ändern.
a = "hello" .. "world" t.n = t.n + 1
Lua kann mehreren Variablen gleichzeitig Werte zuweisen, die Elemente der Variablenliste und der Werteliste sind durch Kommas getrennt, die Werte auf der rechten Seite der Zuweisungsanweisung werden in der Reihenfolge den linken Variablen zugewiesen.
a, b = 10, 2*x <--> a =10; b =2*x
Begegnen einer Zuweisungsanweisung berechnet Lua zunächst alle Werte auf der rechten Seite und führt dann die Zuweisung aus, daher können wir die Werte der Variablen so austauschen:
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 ungleich sind, nimmt Lua die folgenden Strategien basierend auf der Anzahl der Variablen an:
a. number of variables > number of values Fill with nil according to the number of variables b. number of variables < number of values Excess values will be ignored
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
Der letzte Beispiel ist eine häufige Fehlersituation, beachten Sie: Wenn Sie mehreren Variablen zuweisen müssen, müssen Sie jede Variable nacheinander zuweisen.
a, b, c = 0, 0, 0 print(a,b,c) --> 0 0 0
Der mehrfache Zuweisung wird oft verwendet, um Variablen auszutauschen oder die Rückgabe einer Funktion an Variablen zu übergeben:
a, b = f()
f() gibt zwei Werte zurück, den ersten wird a zugewiesen, den zweiten wird b zugewiesen.
Verwenden Sie so oft wie möglich lokale Variablen, es gibt zwei Vorteile:
1. Vermeiden Sie Namenskonflikte.
2. Der Zugriff auf lokale Variablen ist schneller als auf globale Variablen.
Verwendung von eckigen Klammern [] für die Indizierung von table.Lua bietet auch das .-Operator.
t[i] t.i -- Eine vereinfachte Schreibweise, wenn der Index ein String-Typ ist gettable_event(t,i) -- Der Zugriff mit Index ist im Wesentlichen eine ähnliche Funktionsaufruf
> site = {} > site["key"] = "de.oldtoolbag.com" > print(site["key"]) de.oldtoolbag.com > print(site.key) de.oldtoolbag.com