本文并不会把Lua语言的所有内容都包含在内,只对个人学习过程中感觉比较重要的部分做一个记录,以便回顾。

  1. 类型
    学习语言首先要了解它提供的类型,Lua语言提供了如下几种。

    • nil
    • boolean
    • number
    • string
    • userdata
    • function
    • thread
    • table
      Lua中只有nil和boolean中的false视为条件(条件表达式中的条件)假,其他任何值都表示真。
      number可以表示任何32位整数。
      String表示不可变(immutable)的字符串,转义使用””符号,用..来连接字符串。
      table是Lua唯一的数据结构机制。可以理解为Hash表加上可变长数组(不加键默认从1开始计数)。
      talbe的两种存、取值方式
      1
      2
      3
      4
      5
      6
      testTable = {
      ["a"] = "value1",
      b = "value2"
      }
      testTable["a"]
      testTable.b

    function是“第一类值”,支持函数式编程。

  2. 表达式

    • 数字常量
    • 字面字符串
    • 变量
    • 操作符
      • 算数操作符 “-“,”+”,”-“,”*”,”/“,”^”,”%”
      • 关系操作符 “<”,”>”,”<=”,”>=”,”==”,”~=”
      • 逻辑操作符 and,or,not
      • 字符串连接 ..
    • 函数调用
  3. 语句
    do和end表示一个语句块

    1
    2
    3
    do
    ...
    end

    数字型for

    1
    2
    3
    4
    b = {1,4,6,3,9}
    for i=1, #b, 1 do
    print(b[i])
    end

    泛型for
    for k,v in ipairs(a) do print(v) end
    ipairs遍历数组,若使用pairs函数则遍历table中的所有的元素。

  4. 函数
    支持变长参数(用…表示),尾递归。函数的返回值可以有多个。
    o.foo(o, x)
    等价于
    o:foo(x)
  5. 元表Metatable与元方法Meatmethod
    待补充
  6. 协同程序coroutine
    待补充
  7. 弱引用table
    待补充