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

-- test.lua Datei-Skript
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 + 1
Lua 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

a, b, c = 0, 1
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 = {}
> site["key"] = "www.example.com"
> print(site["key"])
www.example.com
> print(site.key)
www.example.com
Weitere Erweiterungen