1、 算数运算符
二元运算符:+-*/^(加减乘除幂)
一元运算符:-(负值)
这些运算符的操作都是实数。
2、 关系运算符
<、>、<=、>=、==~=
这些操作符返回结果为false或者true;==和~=比较两个值,如果两个值类型不同,lua认为两者不同;nil只和自己相等。Lua通过引用比较tables、userdata、funcations。也就是说当且仅当两者表示同一个对象相等。
Lua比较数字按传统的数字进行比较,比较字符串按字母的顺序进行,但是字母顺序依赖本地环境。
当比较不同类型的值的时候要特别注意;
“0”==0 –false
2<15 –true
“2”<”15” –false为了避免不一致的结果,混合比较数字和字符串,lua会报错,比如:2<“15”
3、 逻辑运算符
and or not
逻辑运算符认为false和nil是假(false),其他为真,0也是真。
a and b --如果a为false,则返回a,否则返回b
a or b --如果a为true,则返回a,否则返回b
例如:
print(4and 5) -->5
print(niland 13) -->nil
print(falseand 13) -->false
print(4or 5) -->4
print(falseor 5) -->5
一个很有用的使用技巧:如果x为false或者nil则给x赋初始值v
x =x or v
等价于
If not x then
X = v
End
And的的优先级比or高
C语言中的三元运算符:
a?b:c
在lua中可以这样实现:
(a and b)or c
Not 的结果一直返回false或者true
ptint(notnil) -->truue
print(notfalse) -->true
print(not 0) -->false
pirint(not notnil) -->false
4、 连接运算符
..两个点
字符串连接,乳沟操作数为数字,Lua将数字转成字符串。
print(“hello”..”world”)
5、 优先级
从高到低的排序:
^
not –(unary)
* /
+ -
..
< > <= >= ~= ==
And
Or
除了^和..所有的二元运算符都是做连接的。
a+i<b/2+1 <-->(a+i)<((b/2)+1)
5+x^2*8 <-->5+((x^2)*8)
6、 表的结构
构造器是创建和初始化表的表达式。表示lua特有的功能强大的东西。最简单的构造函数是{},用来创建一耳光空的表。可以直接初始化数组:
Days = {“sunday”,”monday”,”tuesday”,”wednesday”,”thursday”,”friday”,”staturday”}
Lua将Sunday初始化days[1](第一个元素索引为1),用”monday”初始化days[2]
print(days[4]) -->Wednesday
构造函数可以使用任何表达式初始化:
tab = {sin(1),sin(2),sin(3),sin(4),sin(5),sin(6),sin(7),sin(8)}