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

Операторы Lua

Оператор - это специальный символ, который используется для того, чтобы сообщить интерпретатору выполнять определённые математические или логические операции. Язык Lua предоставляет следующие типы операторов:

  • Арифметические операторы

  • Операторы отношений

  • Logical operators

  • другие операторы

Арифметические операторы

В таблице ниже приведены часто используемые арифметические операторы в языке Lua, установите значение A в 10, а значение B в 20:

операторописаниеПример
+ДобавлениеA + B результат 30
-ВычитаниеA - B результат -10
*МножествоA * B результат 200
/ДелениеB / A результат 2
%Получение остаткаB % A результат 0
^Множество степенейA^2 результат 100
-Минус-A результат -10

Онлайн пример

Мы можем использовать следующий пример, чтобы лучше понять применение операторов арифметических операций:

a = 21
b = 10
c = a + b
print("Строка 1 - значение c равно ", c)
c = a - b
print("Строка 2 - значение c равно ", c)
c = a * b
print("Строка 3 - значение c равно ", c)
c = a / b
print("Строка 4 - значение c равно ", c)
c = a % b
print("Строка 5 - значение c равно ", c)
c = a^2
print("Строка 6 - значение c равно ", c)
c = -a
print("Строка 7 - значение c равно ", c)

Результат выполнения программы:

Строка 1 - значение c равно 31
Строка 2 - значение c равно 11
Строка 3 - значение c равно 210
Строка 4 - значение c равно 2.1
Строка 5 - значение c равно 1
Строка 6 - значение c равно 441
Строка 7 - значение c равно -21

Операторы отношений

В таблице ниже приведены часто используемые операторы отношений в языке Lua, установите значение A в 10, а значение B в 20:

операторописаниеПример
==Равно, проверяет, равны ли два значения, если равны, возвращает true, в противном случае возвращает false(A == B) возвращает false.
~=Не равно, проверяет, равны ли два значения, если не равны, возвращает true, в противном случае возвращает false(A ~= B) возвращает true.
>Больше, если значение слева больше значения справа, возвращает true, в противном случае возвращает false(A > B) возвращает false.
<Меньше, если значение слева больше значения справа, возвращает false, в противном случае возвращает true(A < B) is true.
>=Greater than or equal to, if the left value is greater than or equal to the right value, it returns true, otherwise it returns false(A >= B) returns false.
<=Less than or equal to, if the left value is less than or equal to the right value, it returns true, otherwise it returns false(A <= B) returns true.

Онлайн пример

We can understand the application of relational operators more thoroughly through the following examples:

a = 21
b = 10
if (a == b)
then
   print("Line 1 - a is equal to b")
else
   print("Line 1 - a is not equal to b")
end
if (a ~= b)
then
   print("Line 2 - a is not equal to b")
else
   print("Line 2 - a is equal to b")
end
if (a < b)
then
   print("Line 3 - a is less than b")
else
   print("Line 3 - a is greater than or equal to b")
end
if (a > b) 
then
   print("Line 4 - a is greater than b")
else
   print("Line 5 - a is less than or equal to b")
end
-- изменить значения a и b
a = 5
b = 20
if (a <= b) 
then
   print("Line 5 - a is less than or equal to b")
end
if (b >= a) 
then
   print("Line 6 - b is greater than or equal to a")
end

Результат выполнения программы:

Line 1 - a is not equal to b
Line 2 - a is not equal to b
Line 3 - a is greater than or equal to b
Line 4 - a is greater than b
Line 5 - a is less than or equal to b
Line 6 - b is greater than or equal to a

Logical operators

The following table lists the commonly used logical operators in Lua language, with A set to true and B set to false:

операторописаниеПример
andLogical AND operator. If A is false, it returns A, otherwise it returns B.(A and B) is false.
orLogical OR operator. If A is true, it returns A, otherwise it returns B.(A or B) is true.
notLogical NOT operator. Opposite to the logical operation result, if the condition is true, logical NOT is false.not(A and B) is true.

Онлайн пример

We can understand the application of logical operators more thoroughly through the following examples:

a = true
b = true
if(a and b)
then
   print("a and b - условие true")
end
if (a or b)
then
   print("a or b - condition is 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

Результат выполнения программы:

a and b - условие true
a or b - условие true
------------разделительная линия------------
a and b - условие false
not(a and b) - условие true

другие операторы

в таблице ниже перечислены операторы объединения и операторы расчета длины таблицы или строки в языке Lua:

операторописаниеПример
..соединение двух строкa..b, где a = "Hello " и b = "World", результат вывода "Hello World".
#односторонние операторы, возвращающие длину строки или таблицы.#"Hello" возвращает 5

Онлайн пример

Мы можем лучше понять применение оператора объединения и операторов расчета длины таблицы или строки на следующем примере:

a = "Hello "
b = "World"
print("соединение строк a и b", a..b)
print("длина строки b", b)
print("длина строки Test", "Test")
print("длина веб-сайта основного учебного ресурса", "ru.oldtoolbag.com")

Результат выполнения программы:

соединение строк a и b Hello World
длина строки b 5
длина строки Test 4
длина веб-сайта основного учебного ресурса 14

приоритет операций

в порядке убывания:

^
not - (односторонний)
* / %
+ -
..
< > <= >= ~= ==
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)

Онлайн пример

Мы можем лучше понять приоритет операторов языка Lua с помощью следующих примеров:

a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d; -- ( 30 * 15 ) / 5
print("(a + b) * c / d значение операции: ", e)
e = ((a + b) * c) / d; -- (30 * 15) / 5
print("((a + b) * c) / d значение операции: ", e)
e = (a + b) * (c / d); -- (30) * (15/5)
print("(a + b) * (c / d) значение операции: ", e)
e = a + (b * c) / d; -- 20 + (150/5)
print("a + (b * c) / d значение операции: ", e)

Результат выполнения программы:

(a + b) * c / d значение операции: : 90.0
((a + b) * c) / d значение операции: : 90.0
(a + b) * (c / d) значение операции: : 90.0
a + (b * c) / d значение операции: : 50.0