开始
lua环境搭建
lua是一个解释型语言,需要有lua解释器。所以,我们需要安装lua解释器。
- 安装解释器
 
- 执行lua
 
1 2 3 4 5 6 7 8 9 10 11
   | -- 执行lua脚本 lua hello.lua
  -- 进入交互界面,与python差不多 lua
  Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio > 
  -- 退出交互式界面 > os.exit()
   | 
 
第一个hello world
在下面这个代码块中,function作为一个函数块,以end结尾,当被调用时使用。注释使用"–",输入的数据使用内置标准库io来读取。使用内置的print函数打印最终值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
   | 
 
 
 
 
 
    这是将多行注释的代码让其起作用   原理:"--[["是一个行注释,"--]]"也是一个行注释,连起来用就是一个块注释。当一个失效,那么这个块注释就会失效,两个注释符号就变成单个的行注释。
 
 
  function hello()      print(" hello world ! ") end
 
  function fact(n)      if n == 0 then     return 1    else     return n*fact(n-1)   end end
 
  hello()
  print("enter a number : ") a = io.read("*number")  print(fact(a))
 
  | 
 
1 2
   | lua hello.lua     -- 直接运行脚本程序 lua -i hello.lua  -- 执行完脚本后就进入交互式界面,这可以用于程序调试
   | 
 
程序块
一个源代码文件或在交互模式下输入的一行代码,都被称为一个程序块 ,一个程序块就是一连串的语句或指令。lua的格式不严格,语句之间不需要分隔符(可以用";"隔开)。
在交互式环境中,解释器检测到代码不足以构成一个完整的程序块,它会等待输入内容,直至可以构成一个完整的程序块。
1 2 3 4 5 6 7 8 9 10
   | 
  a = 1 b = a*2
  a = 1; b = a*2;
  a=1;b=a*2 a=1 b=a*2
 
  | 
 
将lua代码作为lua库
- 库文件
 
1 2 3 4 5 6 7 8
   |  function norm(x , y)   return (x^2+y^2)^0.5 end
  function twice(x)   return 2*x end
 
  | 
 
- 在交互模式下加载程序库
 
1 2 3
   | > dofile("lib1.lua") -- 加载库文件 > n = norm(3.4,1.0)  -- 使用库文件中的库函数 > print(twice(n))
  | 
 
- 使用代码加载程序库
 
词法规范
lua的标识符可以有任意字母、数字和下划线组成,但是不能以数字开头。以下划线开头,后面跟多个大写字母的标识符在lua中留作特殊用途,通常保留标识符"_"作为哑变量使用。
locale关键字可以将字母作为变量名,但是这些字母不能为关键字和保留字。
locale关键字声明的变量是局部变量,只能作用于文件内。
而将值赋值给一个字符,那这个字符就成为全局变量。
未初始化的变量不会引发错误,访问结果是一个特殊的值nil。
如果一个变量只有较短的生命周期,那就用局部变量。通常没必要删除一个全局变量,如果存在一个全局变量,那它必定具有一个非nil的值。
解释器参数
- lua -e 允许在命令行输入代码
 
1
   | lua -e "print("aaa")"  -- 可以直接打印出双引号中的结果
  | 
 
- lua -l 用于加载库文件
 
1
   | lua -l lib1 -e "a = norm(3 , 4) print(a)" -- 先加载库文件lib1,再在后面执行lib1库文件中的函数
   | 
 
- _PROMPT 自定义解释器交互界面的提示符
 
1 2
   | lua -i -e "_PROMPT='lua>'" lua>
   |