Lua学习笔记-1

  • 逻辑操作符:
      对于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的值会交换
发布了47 篇原创文章 · 获赞 8 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/it_wjw/article/details/53932021