Lua Note

初衷还是Unity

交互模式

  • lua -i-i参数用于在运行完其他命令行参数后进入交互模式
  • 不在交互模式下必须把表达式包在函数print的调用中
  • 如果不想输出结果,可以在行末加上一个;

词法规范

  • 标识符由任意字母、数字和下划线组成的字符串(不能以数字开头)

  • _+大写字母(特殊用途)

  • _+小写字母(哑变量)

  • 注释

    • 单行注释--
    • 多行注释
      --[[ 多行注释 ]]
  • 分隔符;

    • 增加可读性,不是必须的
  • 表达式之间的换行不起任何作用

全局变量

  • 无须声明即可使用
  • 使用未经初始化的全局变量,得到的结果时nil
  • nil赋值给全局变量时,Lua会回收该全局变量

类型和值

  • Lua语言有8种基本类型

    • nil(空)

      • nil赋值给全局变量时,则相当于将其删除(Lua会回收)
    • boolean(布尔)

      • 除false和nil之外的所有值都为真(与C++差异)
      • not运算符永远返回boolean类型的值
        • not nil – true
        • not false – true
    • number(数值)

    • string(字符串)

    • userdata(用户数据)

      • 允许把任意的C语言数据保存在Lua语言变量中
    • function(函数)

    • thread(线程)

    • table(表)

  • type函数

    • 获取一个值对应的类型
    • 返回值永远是一个字符串

独立解释器

  • 是一个可以直接使用Lua语言的小程序

  • 源代码文件第一行以井号#开头,那么解释器在加载文件时会忽略这一行,主要是为了方便在POSIX系统中将Lua作为一种脚本解释器来使用

  • 假设独立解释器位于/usr/local/bin

    • #!/usr/local/bin/lua
      #!/usr/bin/env lua
      • 不需要显式调用Lua语言解释器也可以直接运行Lua脚本
  • 编译器在运行代码前会创建一个名为arg的表

    • 索引0中保存的内容为脚本名
      • arg[0]
    • 索引1保存的内容为第一个参数
      • arg[1]
    • 以此类推
  • Lua语言也支持可变长参数(…)