运算符是告诉解释器执行特定数学或逻辑操作的符号. Lua语言有丰富的内置运算符,并提供以下类型的运算符 :
算术运算符
关系运算符
逻辑运算符
其他运算符
本教程将逐一解释算术,关系,逻辑和其他各种运算符.
下表显示了所有算术运算Lua语言支持的运算符.假设变量 A 持有10而变量 B 持有20然后:
运算符 | 描述 | 示例 |
---|---|---|
+ | 添加两个操作数 | A + B将给出30 |
- | 从第一个减去第二个操作数 | A - B将给-10 |
* | 将两个操作数相乘 | A * B将给出200 |
/ | 用除分子除以分子 | B/A将给出2 |
% | Modulus Operat或整数除法后的余数 | B%A将给出0 |
^ | 指数运算符取指数 | A ^ 2将给出100 |
- | 一元 - 运算符充当否定 | -A将给-10 |
下表显示了Lua语言支持的所有关系运算符.假设变量 A 持有10而变量 B 持有20然后:
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果是,则条件变为真. | (A == B)不成立. |
〜= | 检查两个操作数的值是否相等,如果值不相等则条件变为真. | (A 〜= B)为真. |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件变为真. | (A> B)不是真的. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件变为真. | (A< B)是的. |
> = | 检查是否左操作数的值大于或等于右操作数的值,如果是,则条件变为真. | (A> = B)不是真的. |
< = | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真. | (A < = B)为真. |
下表显示Lua语言支持的所有逻辑运算符.假设变量 A 保持为真,变量 B 保持为假,然后:
运算符 | 描述 | 示例 |
---|---|---|
and | 被称为逻辑AND运算符.如果两个操作数都不为零,则条件成立. | (A和B)为假. |
or | 被称为逻辑OR运算符.如果两个操作数中的任何一个不为零,则条件变为真. | (A或B)为真. |
not | 被称为逻辑非运算符.用于反转其操作数的逻辑状态.如果条件为真,那么Logical NOT运算符将为false. | !(A和B)为真. |
Lua语言支持的其他运算符包括连接和长度.
Operator | 描述 | 示例 |
---|---|---|
.. | 连接两个字符串. | a..b其中a为"Hello",b为"World",将返回"Hello World". |
# | 返回字符串或表长度的一元运算符. | #"Hello"将返回5 |
运算符优先级决定表达式中的术语分组.这会影响表达式的计算方式.某些运营商的优先级高于其他运营商;例如,乘法运算符的优先级高于加法运算符 :
例如,x = 7 + 3 * 2;这里x被赋值为13而不是20,因为operator *的优先级高于+因此它首先乘以3 * 2然后加到7中.
这里,优先级最高的运算符出现在表的顶部,最低的运算符出现在底部.在表达式中,将首先评估更高优先级的运算符.
类别 | 运算符 | 相关性 |
---|---|---|
Unary | 不# - | 从右到左 |
Concatenation | .. | 从右到左 |
Multiplicative | */% | 从左到右 |
Additive | + - | 从左到右 |
Relational | < > < => = ==〜= | 从左到右 |
Equality | ==〜= | 从左到右 |
逻辑AND | and | 从左到右 |
逻辑OR | or | 从左到右 |