- 使用 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命令直接下载: ```shell # 下载 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 结尾 - 举例: ```shell #!/usr/local/bin/lua print("Hello World!!!") ``` - 第一行用来指定Lua解释器所在位置为 /usr/local/bin/lua,加上#号标记解释器会忽略它。 - 一般情况下#!就是用来指定用哪个程序来运行本文件。但是hello.lua并不是一个可执行文件,需要通过chmod来设置可执行权限,最简单的方式为: ```shell chmod 755 hello.lua ``` - 然后执行该文件 ```shell ./hello.lua ``` - 补充一点,如果想在交互式中运行脚本式的hello.lua中的内容,我们可以使用一个dofile函数,如: ```shell dofile("lua_demo/hello.lua") ``` - 注意:在Lua语言中,连续语句之间的分隔符并不是必须的,也就是说后面不需要加分号,当然加上也不会报错, - 在Lua语言中,表达式之间的换行也起不到任何作用。如以下四个写法,其实都是等效的 ```txt 写法一 a=1 b=a+2 写法二 a=1; b=a+2; 写法三 a=1; b=a+2; 写法四 a=1 b=a+2 ``` - 不建议使用第四种方式,可读性太差。 ### 1.1 Lua的注释 - 关于Lua的注释要分两种,第一种是单行注释,第二种是多行注释。 - 单行注释 ```shell --注释内容 ``` - 多行注释 ```shell --[[ 注释内容 注释内容 --]] ``` - 取消多行注释,只需要在第一个--之前在加一个-即可,如: ```shell ---[[ 注释内容 注释内容 --]] ``` ### 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 运算符 ```txt + 加法 - 减法 * 乘法 / 除法 % 取余 ^ 乘幂 - 负号 ``` --- ```txt 10+20 -->30 20-10 -->10 10*20 -->200 20/10 -->2 3%2 -->1 10^2 -->100 -10 -->-10 ``` - 关系运算符 ```txt == 等于 ~= 不等于 > 大于 < 小于 >= 大于等于 <= 小于等于 ``` - 例如: ```txt 10==10 -->true 10~=10 -->false 20>10 -->true 20<10 -->false 20>=10 -->true 20<=10 -->false ``` - 逻辑运算符 ```txt and 逻辑与 A and B && or 逻辑或 A or B || not 逻辑非 取反,如果为true,则返回false ! ``` - 逻辑运算符可以作为if的判断条件,返回的结果如下: ```txt 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 ``` - 其他运算符 ```txt .. 连接两个字符串 # 一元预算法,返回字符串或表的长度 ``` - 例如: ```txt > "HELLO ".."WORLD" -->HELLO WORLD > #"HELLO" -->5 ``` ### 1.4 全局变量&局部变量 - 在Lua语言中,全局变量无须声明即可使用。在默认情况下,变量总是认为是全局的,如果未提前赋值,默认为nil: - 要想声明一个局部变量,需要使用local来声明