1. 取模操作符是根据以下规则定义的:a%b == a - floor(a/b)*b,计算结果永远与第二个参数相同。x%1的结果就是x的小数部分,而x-x%1的结果就是其整数部分。类似的x-x%0.01则是x精确到小数点后两位的结果。
2. 操作符==用于相等性测试,操作符~=用于不等性测试。对于table、userdata和函数,Lua是作引用比较的。
3. 对于操作符and来说,如果它的第一个操作数为假,就返回第一个操作数;不然返回第二个操作数。对于操作符or来说,如果它的第一个操作数为真,就返回第一个操作数;不然返回第二个操作数。and和or都使用短路求值。
4. 有一种常用的Lua习惯写法“x=x or v”,它等价于:if not x then x = v end,它可用于在没有设置x的时候(即对x的求值结果为假时),将其设为一个默认值v。
5. 还有一个习惯的写法“(a and b) or c”,因为and优先级大于or,可以写作“a and b or c”,这类似于C语言中的a?b:c,但前提是b不为假。如果为了选出数字x和y中的较大者,可以使用以下语句:max = (x>y) and x or y。
6. 操作符not永远只返回true或false。
7. 要在Lua中连接两个字符串,可以使用操作符“..”,如果其任意一个操作数是数字的话,Lua会将这个数字转换成一个字符串。
8. 构造式是用于创建和初始化table的表达式。最简单的构造式就是一个空构造式{},用于创建一个空table。构造式还可以用于初始化数组,例如days = {"Sunday" , "Monday"}。Lua还提供了一种特殊的语法用于初始化记录风格的table:a = {x=10, y=20},等价于a = {} a.x=10 a.y=20,可以使用a.x = nil删除字段x。
网友评论