Lua-Operatoren
Operatoren sind Symbole, die dem Interpreter mitteilen, bestimmte mathematische oder logische Operationen auszuführen. Lua hat die folgenden Arten von Operatoren:
- Arithmetische Operatoren
- Relationale Operatoren
- Logische Operatoren
- Weitere Operatoren
Arithmetische Operatoren
Die folgende Tabelle listet die gängigen arithmetischen Operatoren in der Lua-Sprache auf. Angenommen, der Wert von A ist 10 und der Wert von B ist 20:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| + | Addition | A + B ergibt 30 |
| - | Subtraktion | A - B ergibt -10 |
| * | Multiplikation | A * B ergibt 200 |
| / | Division | B / ergibt 2 |
| % | Modulo | B % A ergibt 0 |
| ^ | Potenzierung | A^2 gibt 100 aus |
| - | Negatives Vorzeichen | -A gibt -10 aus |
| // | Operator für Abrundungsdivision (>=lua5.3) | 5//2Gibt 2 aus |
Beispiele
Anhand der folgenden Beispiele können wir die Anwendung arithmetischer Operatoren gründlicher verstehen:
Beispiele
b = 10
c = a + b
print("Zeile 1 - Der Wert von c ist ", c )
c = a - b
print("Zeile 2 - Der Wert von c ist ", c )
c = a * b
print("Zeile 3 - Der Wert von c ist ", c )
c = a / b
print("Zeile 4 - Der Wert von c ist ", c )
c = a % b
print("Zeile 5 - Der Wert von c ist ", c )
c = a^2
print("Zeile 6 - Der Wert von c ist ", c )
c = -a
print("Zeile 7 - Der Wert von c ist ", c )
Die Ausgabe des obigen Programms ist:
Line 1 - c 的值为 31 Line 2 - c 的值为 11 Line 3 - c 的值为 210 Line 4 - c 的值为 2.1 Line 5 - c 的值为 1 Line 6 - c 的值为 441 Line 7 - c 的值为 -21
In Lua,// wird für Divisionsoperationen verwendet, und das Berechnungsergebnis enthält den Nachkommateil.//// wird für Ganzzahldivision verwendet, und das Berechnungsergebnis enthält den Nachkommateil nicht:
Beispiele
b = 2
print("Divisionsoperation - Der Wert von a/b ist ", a / b )
print("Ganzzahldivision - Der Wert von a//b ist ", a // b )
Die Ausgabe des obigen Programms ist:
除法运算 - a/b 的值为 2.5 整除运算 - a//b 的值为 2
Relationale Operatoren
Die folgende Tabelle listet die gängigen relationalen Operatoren in der Lua-Sprache auf. Angenommen, der Wert von A ist 10 und der Wert von B ist 20:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| == | Gleich, prüft, ob zwei Werte gleich sind. Wenn sie gleich sind, wird true zurückgegeben; andernfalls wird false zurückgegeben. | (A == B) ist falsch. |
| ~= | Ungleich, prüft, ob zwei Werte gleich sind. Wenn sie nicht gleich sind, wird true zurückgegeben; andernfalls wird false zurückgegeben. | (A ~= B) ergibt true. |
| > | Größer als, wenn der linke Wert größer als der rechte Wert ist, wird true zurückgegeben; andernfalls wird false zurückgegeben. | (A > B) ist falsch. |
| < | Kleiner als, wenn der linke Wert größer als der rechte Wert ist, wird false zurückgegeben; andernfalls wird true zurückgegeben. | (A < B) ist wahr. |
| >= | Größer als oder gleich, wenn der linke Wert größer als oder gleich dem rechten Wert ist, wird true zurückgegeben; andernfalls wird false zurückgegeben. | (A >= B) gibt false zurück. |
| <= | Kleiner oder gleich: Wenn der linke Wert kleiner oder gleich dem rechten Wert ist, gibt true zurück; andernfalls gibt false zurück. | (A <= B) gibt true zurück. |
Beispiele
Durch die folgenden Beispiele können wir die Anwendung von Vergleichsoperatoren besser verstehen:
Beispiele
b = 10
if( a == b )
dann
print("Zeile 1 - a ist gleich b" )
else
print("Zeile 1 - a ist nicht gleich b" )
end
if( a ~= b )
dann
print("Zeile 2 - a ist nicht gleich b" )
else
print("Zeile 2 - a ist gleich b" )
end
if ( a < b )
dann
print("Zeile 3 - a ist kleiner als b" )
else
print("Zeile 3 - a ist größer oder gleich b" )
end
if ( a > b )
dann
print("Zeile 4 - a ist größer als b" )
else
print("Zeile 5 - a ist kleiner oder gleich b" )
end
-- Ändere die Werte von a und b
a = 5
b = 20
if ( a <= b )
dann
print("Zeile 5 - a ist kleiner oder gleich b" )
end
if ( b >= a )
dann
print("Zeile 6 - b ist größer oder gleich a" )
end
Die Ausgabe des obigen Programms ist:
Line 1 - a 不等于 b Line 2 - a 不等于 b Line 3 - a 大于等于 b Line 4 - a 大于 b Line 5 - a 小于等于 b Line 6 - b 大于等于 a
Logische Operatoren
Die folgende Tabelle listet die gängigen logischen Operatoren in der Sprache Lua auf. Angenommen, der Wert von A ist wahr und der Wert von B ist falsch:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| und | Logischer UND-Operator. Wenn A falsch ist, gibt er A zurück; andernfalls gibt er B zurück. | (A and B) ist falsch. |
| oder | Logischer ODER-Operator. Wenn A wahr ist, gibt er A zurück; andernfalls gibt er B zurück. | (A or B) ist wahr. |
| not | Logischer NICHT-Operator. Er ist das Gegenteil des Ergebnisses der logischen Operation. Wenn die Bedingung wahr ist, ist das logische NICHT falsch. | not(A and B) ist wahr. |
Beispiele
Wir können die Anwendung logischer Operatoren anhand der folgenden Beispiele besser verstehen:
Beispiele
b = wahr
if ( a and b )
dann
print("a and b - Die Bedingung ist wahr" )
end
if ( a or b )
dann
print("a or b - Die Bedingung ist wahr" )
end
print("---------Trennlinie---------" )
-- Ändere die Werte von a und b
a = false
b = wahr
if ( a and b )
dann
print("a and b - Die Bedingung ist wahr" )
else
print("a and b - Die Bedingung ist falsch" )
end
if ( not( a and b) )
dann
print("not( a and b) - Die Bedingung ist wahr" )
else
print("not( a and b) - Die Bedingung ist falsch" )
end
Die Ausgabe des obigen Programms ist:
a and b - 条件为 true a or b - 条件为 true ---------分割线--------- a and b - 条件为 false not( a and b) - 条件为 true
Weitere Operatoren
Die folgende Tabelle listet die Verkettungsoperatoren und die Operatoren zur Berechnung der Länge von Tabellen oder Zeichenketten in der Sprache Lua auf:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| .. | Verkettet zwei Zeichenketten | a..b, wobei a "Hello " und b "World" sind, ist das Ausgabeergebnis "Hello World". |
| # | Unärer Operator, der die Länge einer Zeichenkette oder Tabelle zurückgibt. | #"Hello" gibt 5 zurück |
Beispiele
Wir können die Anwendung der Verkettungsoperatoren und der Operatoren zur Berechnung der Länge von Tabellen oder Zeichenketten anhand der folgenden Beispiele besser verstehen:
Beispiele
b = "World"
print("Zeichenketten a und b verketten ", a..b )
print("Die Länge der Zeichenkette b ",#b )
print("Die Länge der Zeichenkette Test ",#"Test" )
print("Die Länge der URL der Beispiel-Tutorial-Website ",#"www.example.com" )
Die Ausgabe des obigen Programms ist:
连接字符串 a 和 b Hello World b 字符串长度 5 字符串 Test 长度 4 Example网址长度 14
Operatorrangfolge
Von höchster bis niedrigster Priorität:
^ not - (unary) * / % + - .. < > <= >= ~= == and or
Außer^und..sind alle anderen binären Operatoren linksassoziativ.
a+i < b/2+1 <--> (a+i) < ((b/2)+1) 5+x^2*8 <--> 5+((x^2)*8) a < y and y <= z <--> (a < y) and (y <= z) -x^2 <--> -(x^2) x^y^z <--> x^(y^z)
Beispiele
Wir können die Operatorrangfolge der Sprache Lua anhand der folgenden Beispiele besser verstehen:
Beispiele
b = 10
c = 15
d = 5
e = (a + b) * c / d;-- ( 30 * 15 ) / 5
print("Der Operationswert von (a + b) * c / d ist :",e )
e = ((a + b) * c) / d; -- (30 * 15 ) / 5
print("Der Operationswert von ((a + b) * c) / d ist :",e )
e = (a + b) * (c / d);-- (30) * (15/5)
print("(a + b) * (c / d) Operationswert ist:",e )
e = a + (b * c) / d; -- 20 + (150/5)
print("a + (b * c) / d Operationswert ist :",e )
Die Ausgabe des obigen Programms ist:
(a + b) * c / d 运算值为 : 90.0 ((a + b) * c) / d 运算值为 : 90.0 (a + b) * (c / d) 运算值为 : 90.0 a + (b * c) / d 运算值为 : 50.0Andere Erweiterungen