Lua运算符
运算符是一个符号可以告诉解释,以执行特定的数学或逻辑操作。 Lua中语言有丰富的内置运算符以及运算符提供了以下类型:
-
算术运算符
-
关系运算符
-
逻辑运算符
-
其它运算符
本在线教程将一个接一个讲解算术,关系,逻辑和其他各种运算符。
算术运算符
下表列出了所有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 |
关系运算符
下表列出了所有Lua语言支持的关系运算符。假设变量A持有10和变量B持有20则:
操作符 | 描述 | 示例 |
---|---|---|
== | 检查,如果两个操作数的值等于或否,如果是,则条件变为真。 | (A == B) 不为真. |
~= | 检查,如果两个操作数的值相等或没有,如果值不相等,则条件变为真。 | (A ~= B) 为 true. |
> | 检查,如果左操作数的值大于右操作数的值,如果是,则条件成立。 | (A > B) 不为 true. |
< | 检查,如果左操作数的值小于右操作数的值,如果是,则条件成立。 | (A < B) 为 true. |
>= | 检查,如果左操作数的值大于或等于右操作数的值,如果是,则条件成立。 | (A >= B) 不为true. |
<= | 检查,如果左操作数的值小于或等于右操作数的值,如果是,则条件成立。 | (A <= B) 为 true. |
逻辑运算符
下表列出了所有的Lua语言支持的逻辑运算符。假设变量A持有true,变量B持有false:
运算符 | 描述 | 示例 |
---|---|---|
and | 所谓逻辑与运算符。如果两个操作数都是不为零,则条件成立。 | (A and B) 为 false. |
or | 所谓逻辑OR运算符。如果有两个操作数是不为零,则条件变为真。 | (A or B) 为 true. |
not | 所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。 | !(A and B) 为 true. |
其它运算符
通过Lua语言支持其他运算符包括串联和长度。
运算符 | 描述 | 示例 |
---|---|---|
.. | 连接两个字符串。 | a..b 当a的值为 "Hello " 以及b的值为 "World", 会返回 "Hello World". |
# | 一个一元运算符返回一个字符串或一个表的长度。 | #"Hello" 会返回 5 |
Lua运算符优先级
运算符优先级来确定条件的表达式中的分组。这会影响一个表达式如何计算。某些运算符的优先级高于其他;例如,乘法运算符的优先级比加法运算更高:
例如 x = 7 + 3 * 2;这里x被分配13,不是20,因为运算符*的优先级比+高,所以先得到乘以3*2,然后添加7。
这里具有最高优先级运算符出现在表的顶部,那些具有最低出现在底部。在一个表达式,更高的优先级运算符将首先计算赋值。
分类 | 操作符 | 关联 |
---|---|---|
一元运算 | not # - | 从右到左 |
串联 | .. | 从右到左 |
乘法 | * / % | 从左到右 |
相加 | + - | 从左到右 |
关系 | < > <= >= == ~= | 从左到右 |
等式 | == ~= | 从左到右 |
逻辑AND | and | 从左到右 |
逻辑OR | or | 从左到右 |