Ein Operator ist ein Symbol zum Ausführen einer Operation oder bedingten Bewertung.
Logisch
Logische Operatoren geben Werte abhängig von den booleschen Werten der gegebenen Argumente zurück. Wenn ein Argument nicht false oder nil ist, dann bewertet der Operator es als true. Anders als in vielen anderen Sprachen betrachtet Luau sowohl Null als auch den leeren String als true. Die folgende Tabelle fasst zusammen, wie logische Operatoren in Bedingungen funktionieren.
| Operator | Beschreibungen |
|---|---|
| and | Bewertet als true, nur wenn beide Bedingungen wahr sind |
| or | Bewertet als true, wenn eine der Bedingungen wahr ist |
| not | Bewertet als das Gegenteil der Bedingung |
und
Der binäre Operator and gibt eines der beiden Argumente zurück. Wenn das erste Argument als true bewertet wird, gibt es das zweite Argument zurück. Andernfalls gibt es das erste Argument zurück.
print(4 and 5) -- 5
print(nil and 12) -- nil
print(false and 12) -- false
print(false and true) -- false
print(false and false) -- false
print(true and false) -- false
print(true and true) -- trueDu kannst and verwenden, um mehrere Bedingungen in Kontrollstrukturen wie if-Bedingungen und while-Schleifen zu testen. Zum Beispiel testet die folgende if-then-Bedingung, dass beide Bedingungen wahr sind:
local pasta = true
local tomatoSauce = true
if pasta == true and tomatoSauce == true then
print("Wir haben Spaghetti zum Abendessen")
else
print("Es fehlt etwas...")
end
-- Ausgabe: Wir haben Spaghetti zum Abendessenoder
Der binäre Operator or gibt eines der beiden Argumente zurück. Wenn das erste Argument als true bewertet wird, gibt es das erste Argument zurück. Andernfalls gibt es das zweite Argument zurück.
local y = x or 1
print(y) -- 1, weil x nicht existiert und daher nil ist
local d = false
local e = d or 1
print(e) -- 1, weil d false ist
print(4 or 5) -- 4
print(nil or 12) -- 12
print(false or 12) -- 12
print(false or true) -- true
print(false or false) -- false
print(true or false) -- true
print(true or true) -- trueDu kannst or verwenden, um komplexe logische Tests in Kontrollstrukturen durchzuführen. Zum Beispiel testet die folgende if-then-Bedingung, ob zwei Bedingungen wahr sind oder eine dritte Bedingung wahr ist:
local pasta = false
local tomatoSauce = true
local garlicBread = true
if (pasta == true and tomatoSauce == true) or garlicBread == true then
print("Wir haben entweder Spaghetti zum Abendessen ODER Knoblauchbrot")
else
print("Es fehlt etwas...")
end
-- Ausgabe: Wir haben entweder Spaghetti zum Abendessen ODER Knoblauchbrotnicht
Der unäre Operator not gibt den gegenteiligen booleschen Wert des Arguments zurück. Wenn das Argument false oder nil ist, gibt es true zurück. Andernfalls gibt es false zurück.
print(not true) -- false
print(not false) -- true
print(not nil) -- true
print(not "text") -- false
print(not 0) -- falseDu kannst den not-Operator verwenden, um eine Bedingung oder Schleife auszulösen, wenn eine Variable false oder nil ist.
local nilVariable -- Variable ist deklariert, hat aber keinen Wert, daher ist sie nil
local falseVariable = false -- Variable ist mit dem Wert false deklariert
if not nilVariable then
print(nilVariable) -- Gibt "nil" aus, weil nil nicht true ist
end
if not falseVariable then
print(falseVariable) -- Gibt "false" aus, weil false nicht true ist
endDu kannst auch den not-Operator verwenden, um das Gegenteil einer gesamten Mehrbedingungsaussage zu testen. Im folgenden Codebeispiel testet die if-then-Bedingung, dass es weder wahr ist, dass drei größer als vier ist, noch dass fünf größer als vier ist.
local three = 3
local four = 4
local five = 5
if not (three > four or five < four) then
print("Drei ist kleiner als 4 und fünf ist größer als 4.")
end
-- Ausgabe: Drei ist kleiner als 4 und fünf ist größer als 4.Relational
Relationale Operatoren vergleichen zwei Parameter und geben einen boolean: true oder false zurück.
| Operator | Beschreibung | Beispiel | Assoziierte Metamethode |
|---|---|---|---|
| == | Gleich | 3 == 5 → false | __eq |
| ~= | Ungleich | 3 ~= 5 → true | |
| > | Größer als | 3 > 5 → false | |
| < | Weniger als | 3 < 5 → true | __lt |
| >= | Größer oder gleich | 3 >= 5 → false | |
| <= | Weniger oder gleich | 3 <= 5 → true | __le |
Arithmetisch
Luau unterstützt die üblichen binären Operatoren sowie Potenzierung, Modulus und unäre Negation.
| Operator | Beschreibung | Beispiel | Assoziierte Metamethode |
|---|---|---|---|
| + | Addition | 1 + 1 = 2 | __add |
| - | Subtraktion | 1 - 1 = 0 | __sub |
| * | Multiplikation | 5 * 5 = 25 | __mul |
| / | Division | 10 / 5 = 2 | __div |
| // | Boden Division | 10 // 4 = 2 | __idiv |
| ^ | Potenzierung | 2 ^ 4 = 16 | __pow |
| % | Modulus | 13 % 7 = 6 | __mod |
| - | Unäre Negation | -2 = 0 - 2 | __unm |
Zusammengesetzte Zuweisung
Du kannst zusammengesetzte Zuweisungsoperatoren verwenden, um eine Variable gleich dem Ergebnis einer Operation zu setzen, bei der der erste Parameter der aktuelle Wert der Variable ist.
Die Operation in einer zusammengesetzten Zuweisung findet einmal statt. Wenn ein Ausdruck einen zufälligen Index in einer Tabelle generiert, verwendet Luau denselben Index sowohl für die Operation als auch für die Zuweisung.
In den folgenden Beispielen setzen wir voraus, dass local x = 3.
| Operator | Operation | Beispiel | Neuer Wert von x |
|---|---|---|---|
| += | Addition | x += 2 | 5 |
| -= | Subtraktion | x -= 2 | 1 |
| *= | Multiplikation | x *= 2 | 6 |
| /= | Division | x /= 2 | 1.5 |
| //= | Boden Division | x //= 2 | 1 |
| %= | Modulus | x %= 2 | 1 |
| ^= | Potenzierung | x ^= 2 | 9 |
| ..= | Verkettung | x ..= " Welt!" | "3 Welt!" |
Sonstiges
Sonstige Operatoren sind Verkettung und Länge.
| Operator | Beschreibung | Beispiel | Assoziierte Metamethode |
|---|---|---|---|
| .. | Kettet zwei Strings miteinander | print("Hallo " .. "Welt!") | __concat |
| # | Länge der Tabelle | Wenn tableVar = {1, 2, 3}, dann #tableVar == 3. | __len |