lua的表达式
算数运算符
1.二元运算符 加 + 减 - 乘 * 除 / 指数 ^ 取模 %2.一元运算符 负号 -
注意:
1.这些运算符都可以用来操作实数。
b = 1
c = 2
d = 3
print(b + c - d) => 0
print(b * c / d) => 0.6666666667
print(b^2) => 1
关系运算符
小于 <大于 >
小于等于 <=
大于等于 >=
等于 ==
不等于 ~=
注意:
1. 关系运算符的运算结果都是true或者false
b = 1
c = 2
print(b < c) => true
print(b == c) => false
2.这里注意不等于号是~=
print(b ~= c) => true
3.nil只能自身相等
4.两个类型不相同的值是不相同的。
a = 100
b = "100"
print(a == b) =>false
5.table,userdata,function比较的是指向的引用,或者说是指向的对象,只有指向的是同一个对象时才相等。
a = {}
b = {}
c = b
print(a == b) => false
print(b == c) => true
逻辑运算符
或 or与 and
非 not
注意:
1.所有逻辑运算符将false和nil视为假,其他任何都视为真。
a = nil
b = false
c = true
print(not a) => true非假为真
2.对于and来说,如果第一个操作数为假,就返回第一个操作数,不然返回第二个操作数。
print(a and c) => nil
3.对于or来说,如果第一个操作数为真,就返回第一个操作数,不然就返回第二个操作数。
print(a or false) => false nil和false都是假,返回第二个操作数
print(a or c) => true c为真
运算符优先级
从高到低排列^
not #(获取table或者字符串的长度) -(负号)
* / %
+ -
..(字符串连接负号)
< > <= >= ~= ==
and
or
table的构造
1.最简单的就是 {}a = {}
2.以数组方式初始化,数字为索引
b = {"one","two","three","four"}
print(b[1]) => one
print(b[2]) => two
print(b[3]) => three
print(b[4]) => four
两种写法的意义是相同的
3.key-value风格的table
c = {x=100,y=200}
print(c["x"]) => 100
print(c["y"]) =>200
也可以这么写
print(c.x) =>100
print(c.y) => 200
4.可以在创建之后添加或删除字段
d = {}
d.age = 10 创建之后动态添加key
d[2] = "xiaoming" 也可以添加索引
d[2] = nil 删除字段
d = nil 删除table