开始
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>
|