Операторы в Lua
Операторы — это специальные символы, которые указывают интерпретатору выполнять определенные математические или логические операции. Lua предоставляет следующие типы операторов:
- Арифметические операторы
- Операторы отношения
- Логические операторы
- Другие операторы
Арифметические операторы
В следующей таблице перечислены распространенные арифметические операторы в языке Lua. Предположим, что значение A равно 10, а значение B равно 20:
| Operator | Описание | Пример |
|---|---|---|
| + | Сложение | A + B выводит 30 |
| - | Вычитание | A - B выводит -10 |
| * | Умножение | A * B выводит 200 |
| / | Деление | B / A выводит 2 |
| % | Модуль | B % A выводит 0 |
| ^ | Возведение в степень | A^2 выводит 100 |
| - | Отрицательный знак | -A выводит -10 |
| // | Оператор целочисленного деления (>=lua5.3) | 5//2Выводит 2 |
Примеры
Мы можем более подробно понять применение арифметических операторов на следующих примерах:
Примеры
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 )
Вывод вышеприведённой программы:
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
В Lua,// используется для операции деления, и результат вычисления включает дробную часть.//// используется для операции целочисленного деления, и результат вычисления не включает дробную часть:
Примеры
b = 2
print("Операция деления - Значение a/b равно ", a / b )
print("Операция целочисленного деления - Значение a//b равно ", a // b )
Вывод вышеприведённой программы:
除法运算 - a/b 的值为 2.5 整除运算 - a//b 的值为 2
Операторы отношения
В следующей таблице перечислены распространенные операторы отношения в языке Lua. Предположим, что значение A равно 10, а значение B равно 20:
| Operator | Описание | Пример |
|---|---|---|
| == | Равно, проверяет, равны ли два значения. Если они равны, возвращает true; в противном случае возвращает false. | (A == B) ложно. |
| ~= | Не равно, проверяет, равны ли два значения. Если они не равны, возвращает true; в противном случае возвращает false. | (A ~= B) истинно. |
| > | Больше, если левое значение больше правого значения, возвращает true; в противном случае возвращает false. | (A > B) ложно. |
| < | Меньше, если левое значение больше правого значения, возвращает false; в противном случае возвращает true. | (A < B) истинно. |
| >= | Больше или равно, если левое значение больше или равно правому значению, возвращает true; в противном случае возвращает false. | (A >= B) возвращает false. |
| <= | Меньше или равно: если левое значение меньше или равно правому значению, возвращает true; в противном случае возвращает false. | (A <= B) возвращает true. |
Примеры
Мы можем лучше понять применение операторов отношения на следующих примерах:
Примеры
b = 10
if( a == b )
затем
print("Строка 1 - a равно b" )
else
print("Строка 1 - a не равно b" )
end
if( a ~= b )
затем
print("Строка 2 - a не равно b" )
else
print("Строка 2 - a равно b" )
end
if ( a < b )
затем
print("Строка 3 - a меньше b" )
else
print("Строка 3 - a больше или равно b" )
end
if ( a > b )
затем
print("Строка 4 - a больше b" )
else
print("Строка 5 - a меньше или равно b" )
end
-- Измените значения a и b
a = 5
b = 20
if ( a <= b )
затем
print("Строка 5 - a меньше или равно b" )
end
if ( b >= a )
затем
print("Строка 6 - b больше или равно a" )
end
Вывод вышеприведённой программы:
Line 1 - a 不等于 b Line 2 - a 不等于 b Line 3 - a 大于等于 b Line 4 - a 大于 b Line 5 - a 小于等于 b Line 6 - b 大于等于 a
Логические операторы
В следующей таблице перечислены распространённые логические операторы в языке Lua. Предположим, что значение A истинно, а значение B ложно:
| Operator | Описание | Пример |
|---|---|---|
| и | Логический оператор AND. Если A ложно, возвращает A; в противном случае возвращает B. | (A and B) ложно. |
| или | Логический оператор OR. Если A истинно, возвращает A; в противном случае возвращает B. | (A or B) истинно. |
| not | Логический оператор NOT. Он противоположен результату логической операции. Если условие истинно, логическое NOT ложно. | not(A and B) истинно. |
Примеры
Применение логических операторов можно более полно понять на следующих примерах:
Примеры
b = истина
if ( a and b )
затем
print("a and b - Условие истинно" )
end
if ( a or b )
затем
print("a or b - условие истинно" )
end
print("---------Разделитель---------" )
-- Измените значения a и b
a = false
b = истина
if ( a and b )
затем
print("a and b - Условие истинно" )
else
print("a and b - условие ложно" )
end
if ( not( a and b) )
затем
print("not( a and b) - условие истинно" )
else
print("not( a and b) - условие ложно" )
end
Вывод вышеприведённой программы:
a and b - 条件为 true a or b - 条件为 true ---------分割线--------- a and b - 条件为 false not( a and b) - 条件为 true
Другие операторы
В следующей таблице перечислены операторы конкатенации и операторы вычисления длины таблиц или строк в языке Lua:
| Operator | Описание | Пример |
|---|---|---|
| .. | Конкатенирует две строки | a..b, где a — "Hello ", а b — "World", результат вывода — "Hello World". |
| # | Унарный оператор, возвращающий длину строки или таблицы. | #"Hello" возвращает 5 |
Примеры
Мы можем более подробно понять применение операторов конкатенации и операторов для вычисления длины таблиц или строк на следующих примерах:
Примеры
b = "World"
print("Объединить строки a и b ", a..b )
print("Длина строки b ",#b )
print("Длина строки Test ",#"Test" )
print("Длина URL учебного сайта Example ",#"www.example.com" )
Вывод вышеприведённой программы:
连接字符串 a 和 b Hello World b 字符串长度 5 字符串 Test 长度 4 Example网址长度 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)
Примеры
Мы можем более подробно понять приоритет операторов языка Lua на следующих примерах:
Примеры
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Другие расширения