首页 > 代码库 > Lua 第三章--表达式

Lua 第三章--表达式

        表达式用于表示值。Lua的表达式中可以包含数字常量、字面字符串、变量、一元和二元操作符及函数调用。另外有别于传统的是,表达式中还可以包括函数定义和table构造式。

        Lua支持常规的算术操作符有:二元的+、-、*、/、^、%,及一元 - (负号)。取模操作符计算结果的符号永远与第二个参数相同。

        Lua提供的关系操作符有:>、<、>=、<=、==、~=。所有这些操作符的运算结果都是true或false。

        逻辑操作符有and、or 和not 。与条件控制语句一样,所有的逻辑操作符将false 和nil 视为假,其他视为真。对于操作符and 来说,如果它的第一个操作数为假,就返回第一个操作数,不然返回第二个操作数。对于操作符or 来说,如果它的第一个操作数为真,就返回第一个操作数,不然返回第二个操作数。

print(4 and 5)        -->5
print(nil and 3)      -->nil
print(false and 3)    -->false
print(4 or 5)         -->4
print(false or 5)     -->5
print(not nil)        -->true
print(not false)      -->true
print(not 0)          -->false
print(not not nil)    -->false

        要在Lua中连接两个字符串,可以使用操作符“.."(两个点)。如果其任意一个操作数是数字的话,Lua会将这个数字转换成一个字符串:

print("Hello ".."World")        -->Hello World
print(0 ..1)                    -->01

        请记住,Lua中的字符串是不可变的值。连接操作符只会创建一个新的字符串,而不会对其原操作数进行任何修改。

        Lua操作符的优先级如下所示(从高到低):

^
not # -(一元负号)
* / %
+ -(二元减号)
..
< > <= >= ~= ==
and
or

        在二元操作符中,除了指数操作符”^“和连接操作符”..“是”右结合“的,所有其他操作符都是”左结合“的。

        构造式是用于创建和初始化table的表达式。

days = {"M", "T", "W", "T", "F", "S"}
print(days[1])        -->M
a = {x=1, y=2}        --等价于 a={}; a.x=1; a.y=2
polyline = {color="blue", t=4, {x=0, y=1}}
print(polyline[3].x)            -->0

        在构造式中还可以用分号代替逗号。通常会将分号用于分隔构造式中不同的成分:

{x=0, y=1; "one", "two"}


Lua 第三章--表达式