English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operatori Lua

Un operatore è un simbolo speciale utilizzato per informare l'interprete di eseguire un'operazione matematica o logica specifica. Lua fornisce i seguenti tipi di operatori:

  • Operazioni aritmetiche

  • Operazioni relazionali

  • Operatori logici

  • 其他运算符

Operazioni aritmetiche

La tabella seguente elenca gli operatori aritmetici comuni nel linguaggio Lua, assegnando un valore di 10 a A e 20 a B:

操作符描述Esempio
+AddizioneA + B il risultato è 30
-SottrazioneA - B il risultato è -10
*MoltiplicazioneA * B il risultato è 200
/DivisioneB / A il risultato è 2
%RestoB % A il risultato è 0
^Moltiplicazione esponenzialeA^2 il risultato è 100
-Segno negativo-A il risultato è -10

Esempio online

Possiamo utilizzare l'esempio seguente per comprendere meglio l'applicazione degli operatori aritmetici:

a = 21
b = 10
c = a + b
print("Linea 1 - Il valore di c è ", c)
c = a - b
print("Linea 2 - Il valore di c è ", c)
c = a * b
print("Linea 3 - Il valore di c è ", c)
c = a / b
print("Linea 4 - Il valore di c è ", c)
c = a % b
print("Linea 5 - Il valore di c è ", c)
c = a^2
print("Linea 6 - Il valore di c è ", c)
c = -a
print("Linea 7 - Il valore di c è ", c)

Il risultato dell'esecuzione del programma sopra è:

Linea 1 - Il valore di c è 31
Linea 2 - Il valore di c è 11
Linea 3 - Il valore di c è 210
Linea 4 - Il valore di c è 2.1
Linea 5 - Il valore di c è 1
Linea 6 - Il valore di c è 441
Linea 7 - Il valore di c è -21

Operazioni relazionali

La tabella seguente elenca i segni di operazione relazionale comuni nel linguaggio Lua, assegnando un valore di 10 a A e 20 a B:

操作符描述Esempio
==Uguale, verifica se due valori sono uguali, se lo sono restituisce true, altrimenti restituisce false(A == B) è false.
~=Diverso, verifica se due valori sono uguali, se non lo sono restituisce true, altrimenti restituisce false(A ~= B) è true.
>Maggiore, se il valore a sinistra è maggiore del valore a destra, restituisce true, altrimenti restituisce false(A > B) è false.
<Meno, se il valore a sinistra è maggiore del valore a destra, restituisce false, altrimenti restituisce true(A < B) è true.
>=Maggiore o uguale, se il valore di sinistra è maggiore o uguale al valore di destra, restituisce true, altrimenti restituisce false(A >= B) restituisce false.
<=Minore o uguale, se il valore di sinistra è minore o uguale al valore di destra, restituisce true, altrimenti restituisce false(A <= B) restituisce true.

Esempio online

Possiamo comprendere meglio l'applicazione degli operatori relazionali attraverso l'esempio seguente:

a = 21
b = 10
if(a == b)
then
   print("Linea 1 - a è uguale a b")
else
   print("Linea 1 - a è diverso da b")
end
if(a ~= b)
then
   print("Linea 2 - a è diverso da b")
else
   print("Linea 2 - a è uguale a b")
end
if (a < b)
then
   print("Linea 3 - a è minore di b")
else
   print("Linea 3 - a è maggiore o uguale a b")
end
if (a > b) 
then
   print("Linea 4 - a è maggiore di b")
else
   print("Linea 5 - a è minore o uguale a b")
end
-- 修改 a 和 b 的值
a = 5
b = 20
if (a <= b) 
then
   print("Linea 5 - a è minore o uguale a b")
end
if (b >= a) 
then
   print("Linea 6 - b è maggiore o uguale a a")
end

Il risultato dell'esecuzione del programma sopra è:

Linea 1 - a è diverso da b
Linea 2 - a è diverso da b
Linea 3 - a è maggiore o uguale a b
Linea 4 - a è maggiore di b
Linea 5 - a è minore o uguale a b
Linea 6 - b è maggiore o uguale a a

Operatori logici

La tabella seguente elenca gli operatori logici comuni del linguaggio Lua, con A impostato su true e B su false:

操作符描述Esempio
andOperatore logico e. Se A è false, restituisce A, altrimenti restituisce B.(A and B) è false.
orOperatore logico o. Se A è true, restituisce A, altrimenti restituisce B.(A or B) è true.
notOperatore logico non. Contrario al risultato logico, se la condizione è true, il non logico è false.not(A and B) è true.

Esempio online

Possiamo comprendere meglio l'applicazione degli operatori logici attraverso l'esempio seguente:

a = true
b = true
if ( a and b )
then
   print("a and b - 条件为 true")
end
if (a o b)
then
   print("a o b - condizione true")
end
print("---------分割线---------")
-- 修改 a 和 b 的值
a = false
b = true
if ( a and b )
then
   print("a and b - 条件为 true")
else
   print("a and b - 条件为 false")
end
if ( not( a and b) )
then
   print("not( a and b) - 条件为 true")
else
   print("not( a and b) - 条件为 false")
end

Il risultato dell'esecuzione del programma sopra è:

a and b - 条件为 true
a or b - 条件为 true
---------分割线---------
a and b - 条件为 false
not( a and b) - 条件为 true

其他运算符

下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符:

操作符描述Esempio
..连接两个字符串a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
#一元运算符,返回字符串或表的长度。#"Hello" 返回 5

Esempio online

我们可以通过以下示例来更加透彻地理解连接运算符与计算表或字符串长度的运算符的应用:

a = "Hello "
b = "World"
print("连接字符串 a 和 b ", a..b)
print("b 字符串长度 ",#b)
print("字符串 Test 长度 ",#"Test")
print("基础教程网网址长度 ",#"it.oldtoolbag.com")

Il risultato dell'esecuzione del programma sopra è:

连接字符串 a 和 b Hello World
b 字符串长度 5
字符串 Test 长度 4
基础教程网网址长度 14

运算符优先级

从高到低的顺序:

^
not - (unary)
* / %
+ -
..
< > <= >= ~= ==
and
or

除了 ^ 和 .. 之外的所有二元运算符都是左连接的。

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)

Esempio online

Possiamo comprendere meglio la priorità degli operatori del linguaggio Lua attraverso l'esempio seguente:

a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d; -- ( 30 * 15 ) / 5
print("(a + b) * c / d il valore dell'operazione è: ", e)
e = ((a + b) * c) / d; -- (30 * 15) / 5
print("((a + b) * c) / d il valore dell'operazione è: ", e)
e = (a + b) * (c / d); -- (30) * (15/5)
print("(a + b) * (c / d) il valore dell'operazione è: ", e)
e = a + (b * c) / d; -- 20 + (150/5)
print("a + (b * c) / d il valore dell'operazione è: ", e)

Il risultato dell'esecuzione del programma sopra è:

(a + b) * c / d il valore dell'operazione è: : 90.0
((a + b) * c) / d il valore dell'operazione è: : 90.0
(a + b) * (c / d) il valore dell'operazione è: : 90.0
a + (b * c) / d il valore dell'operazione è: : 50.0