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:

OperatorBeschreibungBeispiel
+AdditionA + B ergibt 30
-SubtraktionA - B ergibt -10
*MultiplikationA * B ergibt 200
/DivisionB / ergibt 2
%ModuloB % A ergibt 0
^PotenzierungA^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

a = 21
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

a = 5
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:

OperatorBeschreibungBeispiel
==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

a = 21
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:

OperatorBeschreibungBeispiel
undLogischer UND-Operator. Wenn A falsch ist, gibt er A zurück; andernfalls gibt er B zurück.(A and B) ist falsch.
oderLogischer ODER-Operator. Wenn A wahr ist, gibt er A zurück; andernfalls gibt er B zurück.(A or B) ist wahr.
notLogischer 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

a = wahr
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:

OperatorBeschreibungBeispiel
..Verkettet zwei Zeichenkettena..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

a = "Hello "
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

a = 20
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.0
Andere Erweiterungen