You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.8 KiB
4.8 KiB
-
使用 Lua 脚本
- 轻量级: Lua用标准C语言编写并以源代码形式开发,编译后仅仅一百余千字节,可以很方便的嵌入到其他程序中。
- 可扩展: Lua提供非常丰富易于使用的扩展接口和机制,由宿主语言(通常是C或C++)提供功能,Lua可以使用它们,就像内置的功能一样。
- 支持面向过程编程和函数式编程
-
应用场景
- 游戏开发、独立应用脚本、web应用脚本、扩展和数据库插件、系统安全上。
-
安装
- Lua的官网地址为:
https://www.lua.org
- 点击download可以找到对应版本的下载地址,我们本次课程采用的是lua-5.3.5,其对应的资源链接地址为https://www.lua.org/ftp/lua-5.4.1.tar.gz,也可以使用wget命令直接下载:
- Lua的官网地址为:
# 下载 gz 安装包
wget https://www.lua.org/ftp/lua-5.4.1.tar.gz
# 安装需要的依赖
yum install -y readline-devel
# 编译安装
cd lua-5.4.1
make linux test
make install
# 验证安装
lua -v
- Lua的语法
- Lua交互式编程模式可以通过命令lua -i 或lua来启用:
- 脚本文件以 .lua 结尾
- 举例:
#!/usr/local/bin/lua
print("Hello World!!!")
- 第一行用来指定Lua解释器所在位置为 /usr/local/bin/lua,加上#号标记解释器会忽略它。
- 一般情况下#!就是用来指定用哪个程序来运行本文件。但是hello.lua并不是一个可执行文件,需要通过chmod来设置可执行权限,最简单的方式为:
chmod 755 hello.lua
- 然后执行该文件
./hello.lua
- 补充一点,如果想在交互式中运行脚本式的hello.lua中的内容,我们可以使用一个dofile函数,如:
dofile("lua_demo/hello.lua")
- 注意:在Lua语言中,连续语句之间的分隔符并不是必须的,也就是说后面不需要加分号,当然加上也不会报错,
- 在Lua语言中,表达式之间的换行也起不到任何作用。如以下四个写法,其实都是等效的
写法一
a=1
b=a+2
写法二
a=1;
b=a+2;
写法三
a=1; b=a+2;
写法四
a=1 b=a+2
- 不建议使用第四种方式,可读性太差。
1.1 Lua的注释
- 关于Lua的注释要分两种,第一种是单行注释,第二种是多行注释。
- 单行注释
--注释内容
- 多行注释
--[[
注释内容
注释内容
--]]
- 取消多行注释,只需要在第一个--之前在加一个-即可,如:
---[[
注释内容
注释内容
--]]
1.2 标识符
- 换句话说标识符就是我们的变量名,Lua定义变量名以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。
- 这块建议大家最好不要使用下划线加大写字母的标识符,因为Lua的保留字也是这样定义的,容易发生冲突。注意Lua是区分大小写字母的。
1.3 关键字
- 下列是Lua的关键字,大家在定义常量、变量或其他用户自定义标识符都要避免使用以下这些关键字:
关键词 | 关键词 |
---|---|
and | break |
elseif | end |
function | if |
nil | not |
return | then |
while | goto |
do | else |
false | for |
in | local |
or | repeat |
true | until |
- 一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。这个也是上面我们不建议这么定义标识符的原因。
1.3 运算符
+ 加法
- 减法
* 乘法
/ 除法
% 取余
^ 乘幂
- 负号
10+20 -->30
20-10 -->10
10*20 -->200
20/10 -->2
3%2 -->1
10^2 -->100
-10 -->-10
- 关系运算符
== 等于
~= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
- 例如:
10==10 -->true
10~=10 -->false
20>10 -->true
20<10 -->false
20>=10 -->true
20<=10 -->false
- 逻辑运算符
and 逻辑与 A and B &&
or 逻辑或 A or B ||
not 逻辑非 取反,如果为true,则返回false !
- 逻辑运算符可以作为if的判断条件,返回的结果如下:
A = true
B = true
A and B -->true
A or B -->true
not A -->false
A = true
B = false
A and B -->false
A or B -->true
not A -->false
A = false
B = true
A and B -->false
A or B -->true
not A -->true
- 其他运算符
.. 连接两个字符串
# 一元预算法,返回字符串或表的长度
- 例如:
> "HELLO ".."WORLD" -->HELLO WORLD
> #"HELLO" -->5
1.4 全局变量&局部变量
- 在Lua语言中,全局变量无须声明即可使用。在默认情况下,变量总是认为是全局的,如果未提前赋值,默认为nil:
- 要想声明一个局部变量,需要使用local来声明