Kong网关:入门、实战与进阶
上QQ阅读APP看书,第一时间看更新

3.3 操作符

操作符用于执行程序代码运算,可根据代码中的操作数进行运算。Lua语言中的运算操作符与其他编程语言中的运算操作符类似,分为数学运算操作符、位运算操作符、比较运算操作符、逻辑运算操作符。这些操作符在使用过程中遵循一定的优先级。

1.数学运算操作符

数学运算操作符是编程语言中最基本的操作符。Lua数学运算操作符如表3-2所示。此处需要注意的是,Lua在除法中遇到无限循环小数,默认会保留13位小数。如果需要保留指定的小数,可以使用string.format方法。

表3-2 Lua数学运算操作符

2.位运算操作符

表3-3展示了位运算操作符。所有的位运算是将操作数先转换为整数,然后按位操作。其结果也是一个整数。对于右移和左移,均用零来填补空位。若移动的位数为负,则向反方向移动;若移动的位数的绝对值大于等于整数本身的位数,结果为零(所有位都被移出)。

表3-3 Lua位运算操作符

3.比较运算操作符

Lua比较运算操作符如表3-4所示。其中,不等于运算符与其他编程语言中的操作符稍有不同,C、C++、Java中的不等于都为!=。

表3-4 Lua比较运算操作符

4.逻辑运算操作符

Lua逻辑运算操作符如表3-5所示。在Lua语言中,所有的操作符都把false和nil当作假,而把其他的任何值当作真。取反操作(not)总是返回false或true中的一个。与操作符(and)表示在第一个参数为false或nil时,返回第一个参数;否则返回第二个参数。或操作符(or)表示在第一个参数不为nil和false时,返回第一个参数;否则返回第二个参数。and和or都遵循短路原则。

表3-5 Lua逻辑运算操作符

5.其他操作符

Lua中的“...”与“#”运算符是Lua独有的。当我们使用C++STL中的字符串时,由于库中的string类重新加载了“+”操作符,因此用起来十分的方便。但是在Lua中,这是不被允许的。于是,Lua提供了连接字符串。当两个数字之间使用“...”时,Lua会将这两个数字转换成一个字符串。“#”在Lua中主要用于取长度,应用于字符串与表。字符串的长度就是其字节数,即每个字符为一个字节。

Lua操作符优先级如表3-6所示,优先级由低到高排序。在使用过程中,用户可以用()来更改表达式的优先级。

表3-6 Lua操作符优先级