0x03 表达式
算术操作符
支持常规的算术操作符:二元的 + - * / ^ %
一元的 -
算术操作与C等语言一致
关系操作符
Lua提供了以下的关系操作符:<
,>
,<=
,>=
,~=
所有这些操作符的运算结果都是true
或false
==
~=
用于相等性测试,这两个操作符可以应用于任意两个值。如果值具有不同类型则Lua认为它们是不相等的,否则Lua会根据它们的类型来比较两者。
对于table
userdata
和function
,Lua是作引用比较的。
a = {}; a.x = 1; a.y = 0
b = {}; b.x = 1; b.y = 0
a = c
上面的代码结果为 a==c
a~=b
不同类型的值做比较时返回false
逻辑操作符
逻辑操作符有and
or
not
,所有的逻辑操作符都返回true
false
nil
- 对于 and
来说,如果第一个操作数为假,就返回第一个操作数,否则返回第二个操作数
- 对于 or
来说,如果第一个操作数为真,就返回第一个操作数,否则返回第二个操作数
a>b?a:b
用and
和or
来表示则是
max = (x > y) and x or y
- 当x > y 时,就返回and
后面的x,
- 当x <= y 时,or
前面的表达式为false,于是返回or
后面的y
字符串连接
连接操作符:..
print("Hello" .. "World") -> HelloWorld
print(0..1) -> 01
优先级
Item |
---|
^ |
not # -(一元) |
* / % |
.. |
< > <= >= |
and |
or |
table构造式
可以初始化数组 也可以初始化键值对
num = {"one", "two", "three"}
a = {x=10, y=20}
若要以0开始索引,则可以这么做:
days = {[0] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
构造式 a = {x=0, y=0}
等价于 a = {["x"] = 0, ["y"] = 0}