首页 > 代码库 > Lua chapter 2

Lua chapter 2

1、算术运算符: "^"表示指数,"%"求模
如:
print(9^0.5);        --> 表示9的平方根
x = 3.14567;
print(x%1);     --> 获取小数部分
print(x - x%1);      --> 获取整数部分
print(x - x%0.01);   --> 获取精确到小数点后两位的结果,没有做四舍五入处理

2、关系运算符,对于table,userdata,函数,Lua做引用比较,只有当它们引用同一个对象时,才相等
如:
a = {};
a.x = 1;
b = {};
b.x = 1;
c = a;
其结果是: a==c, a~=b .  "~=" 表示不等于

3、逻辑操作符 and 和 or 都是短路求值,在需要时,才会去评估第二个值。检测到哪个值,就返回哪个值
如:
print(5 and 4);      --> 因为检测5是真,继续检测4,所以返回4
print(6 or nil);     --> 6是真,所以直接返回6
print(not 4);        --> 操作符not的结果永远只返回 true 或是 false

4、 一些常用写法
1) x = x or v;    -- 如果x是nil,则赋值 v
2)
x=10;
y=20;
max = x>y and x or y;  
-- and的优先级高于or, 所以也可以看出(x>y and x) or y, 类似于 x>y?x:y 
print(max);

5、table 的构造式
   如: days = {"Sun","Mon","Tue"}, 会自动将days[1]初始化为 "Sun", 注:下标从1 开始。
   如果要让索引从0 开始,可以这样 days = {[0] = "Sun","Mon","Tue"},这样就从0开始索引

   但是Lua不推荐以0作为数组的起始索引,因为大多数内建函数都假设数组起始于索引1