- 逻辑操作符:
对于a and b来说,如果a为真,则返回b,否则返回a
对于a or b来说,如果a为真,则返回a,否则返回b - 取模运算
a % b == a - floor(a / b) * b
a % 1 :取a的小数部分
a - a % 1 :取a的整数部分
a - a % 0.01 : 精确到a的两位小数 - 块注释及其技巧
- 字符串
字符串不可变,可以用gsub在原有的基础上创建一个全新的字符串
a = “abc”
b = string.gsub(a,”a”,”test”)
b –> testbc
在Lua中,构造式第一个元素的索引为1而非0 - table
疑惑点:
list = nil
for line in io.lines() do
list = {next = list,value = line}
end
为何这就能够创建了一个链表list呢???
想明白了:类似于栈,实现了一个倒叙的链表
polyline = {color = "blue",thickness = 2,npoints = 4,
{x = 0, y = 4},
{x = -10,y = 0},
{x = 10, y = 1},
{x = 0, y = 1}
}
polyline[1].y = 4
polyline[2].x = -10
由此可以知道Lua中的table不同于C中的数组,利用列表初始化时其默认的首元素的索引为1,但是如果利用记录风格初始化时,起首元素的索引时根据索引的键值来确定的,也就是说,Lua会根据键值先去查找该键值所在的地址,然后取出其中的内容。
如果需要用表达式作为键值,则需要使用[]来表示,例如i = 10;polyline = {[i + 10] = “ab”};则polyline[20] = ab
构造式{“r”,”g”,”b”}等价于{[1] = “r”,[2] = “g”,[3] = “b”}
问题:
如果是这个呢?{[“1”}] = “r”,[“2”] = “g”,[“3”] = “b”}
- 语句
a,b,c = 0 这里表示a = 0,b = c = nil
a,b,c = 0,0,0 三者都为0
多重赋值的时候先计算右侧的值后再进行赋值
x,y = y,x
执行后则x,y的值会交换