操作符

操作符是用于告诉解释器执行特定的数学或逻辑运算的符号。Lua 语言有丰富的内置操作符,主要包括以下几类:

  • 算术运算操作符
  • 关系运算操作符
  • 逻辑运算操作符
  • 其它操作符
这篇教程将会依次介绍以上四类操作符。

算术去处操作符

下面的表中列出了所有 Lua 语言支持的算术运算操作符。假设 A 变量的值为 10,B 变量的值为 20,则:

操作符 描述 示例
+ 两个操作数据相加 A + B = 30
- 第一个操作数减去第二个操作数据 A - B = 10
* 两个操作数相乘 A * B = 200
% 模除操作符 A % B = 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 逻辑与运算符。如果两个操作数都非零,则条件为真。 (A and B) 为假。
or 逻辑或运算符。如果两个操作数中其中有一个非零,则条件为真。 (A or B) 为真。
not 逻辑非运算符。翻转操作数的逻辑状态。如果条件是真,则逻辑非运算符会将其变成假。 !(A and B) 为真。

其它操作符

Lua 语言还支持另外两个操作符:

操作符 描述 示例
.. 连接两个字符串。 若 a 为 "Hello",b 为 "World",则 a..b 返回 "Hello World"。
# 一元运算符,返回字符串或者表的长度。 #"Hello" 返回 5。

操作符优先级

操作符的优先级将决定表达式中的项如何组合。这会影响到表达式的求值。一些操作符比另外一些操作符有更高的优先级。例如,乘法操作符优先级比加法操作符更高。

例如 x = 7 +3*2,这里 x 的值为 13,而不是 20。这是因为操作符 * 优级级比操作符 + 优先级更高,所以先得到 3*2 的乘积,然后再加上 7。

下面的表中,从上到下优先级递减。在每个表达式中,高优先级操作数先运算。

分类 操作数 结合性
一元运算符类 not # - 从右至左
连接运算符 .. 从右至左
乘除运算符类 * / % 从左至右
加减运算符类 + - 从左至右
关系运算符类 < > <= >= == ~= 从左至右
等于运算符类 == ~= 从左至右
逻辑与运算符 and 从左至右
逻辑或运算符 or 从左至右