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) -- 5print(nil and 12) -- nilprint(false and 12) -- falseprint(false and true) -- falseprint(false and false) -- falseprint(true and false) -- falseprint(true and true) -- true
Du 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 = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("Wir haben Spaghetti zum Abendessen")elseprint("Es fehlt etwas...")end-- Ausgabe: Wir haben Spaghetti zum Abendessen
oder
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 1print(y) -- 1, weil x nicht existiert und daher nil istlocal d = falselocal e = d or 1print(e) -- 1, weil d false istprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- trueprint(false or false) -- falseprint(true or false) -- trueprint(true or true) -- true
Du 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 = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("Wir haben entweder Spaghetti zum Abendessen ODER Knoblauchbrot")elseprint("Es fehlt etwas...")end-- Ausgabe: Wir haben entweder Spaghetti zum Abendessen ODER Knoblauchbrot
nicht
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) -- falseprint(not false) -- trueprint(not nil) -- trueprint(not "text") -- falseprint(not 0) -- false
Du 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 nillocal falseVariable = false -- Variable ist mit dem Wert false deklariertif not nilVariable thenprint(nilVariable) -- Gibt "nil" aus, weil nil nicht true istendif not falseVariable thenprint(falseVariable) -- Gibt "false" aus, weil false nicht true istend
Du 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 = 3local four = 4local five = 5if not (three > four or five < four) thenprint("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 |