超详细Redis入门教程——Lua 脚本简介与基础语法
本文小新为大家带来 Lua 脚本简介与基础语法 相关知识,具体内容包括Lua 简介,Linux 系统的 Lua(包括:Lua 下载,Lua 安装,Hello World),Lua 语法基础(包括:注释,数据类型,标识符,运算符,函数,流程控制语句,循环控制语句)等进行详尽介绍~
前言
本文小新为大家带来 Lua 脚本简介与基础语法 相关知识,具体内容包括Lua 简介
,Linux 系统的 Lua
(包括:Lua 下载
,Lua 安装
,Hello World
),Lua 语法基础
(包括:注释
,数据类型
,标识符
,运算符
,函数
,流程控制语句
,循环控制语句
)等进行详尽介绍~
不积跬步,无以至千里;不积小流,无以成江海。每天进步一点点,在成为强者的路上,小新与大家共同成长!
📌博主主页:小新要变强 的主页
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)
🚩欢迎关注小新的Git仓库:小新Java成长之路,不定期更新Java学习资料~
↩️本文上接:超详细Redis入门教程——Redis缓存
目录
文章标题
一、Lua 简介
Lua 是一个由标准 C 语言开发的、开源的、可扩展的、轻量级的、弱类型的、解释型脚
本语言,是于 1993 年由巴西里约热内卢天主教大学的三人研究小组使用标准 C 语言开发。
Lua 的官网为:https://www.lua.org/
二、Linux 系统的 Lua
1️⃣Lua 下载
若要使用 Lua 则需要先从官网(https://www.lua.org/)下载其源码并安装。
2️⃣Lua 安装
先将下载好的 Lua 源码上传到 Linux,然后再进行安装。
🍀(1)解压
将 Lua 源码解压到/opt/apps 目录。
进入到/opt/apps 下的 lua 目录可以看到编译用的 Makefile 文件及源码目录 src。
🍀(2)安装 gcc
由于 Lua 是由 C/C++语言编写的,所以对其进行编译就必须要使用相关编译器。对于C/C++语言的编译器,使用最多的是 gcc。
🍀(3)编译
执行编译命令 make linux test。
🍀(4)安装
安装完毕后,可以通过 lua –v 查看版本号,与前面 make linux test 中最后显示的结果是相同的。
3️⃣Hello World
🍀(1)两种交互模式
Lua 为用户提供了两种交互模式:命令行模式与脚本文件模式。
A、 命令行模式
该模式是,直接在命令行中输入语句,回车即可看到运行结果。
在任意目录下使用 lua 命令进入 lua 命令行模式,在其中输入语句后回车即可运行显示出结果。使用 Ctrl + C 退出模式。
需要注意,lua 对语句后的分号要求不是强制性的,有没有都行。
B、 脚本文件模式
该模式是先要编写脚本文件,然后再使用 lua 命令来运行文件。
例如,在当前用户主目录中新建一个 script 目录,在其中创建一个名称为 hello.lua 的文件,文件中就写一名 print()语句即可。
然后直接运行“lua 脚本文件”即可看到结果。
🍀(2)两种脚本运行方式
对于脚本文件的运行有两种方式。一种是上面的 lua 命令方式,还有一种是可执行文件方式。可执行文件方式是,将 lua 脚本文件直接修改为可执行文件运行。
下面就使用第二种方式来运行。
A、 修改脚本文件内容
在脚本文件第一行增加#!/usr/bin/lua,表示当前文件将使用/usr/bin/lua 命令来运行。
B、 修改脚本文件权限
为脚本文件赋予可执行权限。
C、 运行
直接使用文件名即可运行。
三、Lua 语法基础
1️⃣注释
Lua 的行注释为两个连续的减号,段注释以–[[开头,以–]]结尾。
不过,在调试过程中如果想临时取消段注释,而直接将其标识删除,这样做其实并不好。因为有可能还需要再添加上。而段注释的写法相对较麻烦。所以,Lua 给出了一种简单处理方式:在开头的–[[前再加一个减号,即可使段注释不起作用。其实就是使两个段注释标识变为了两个行注释。
2️⃣数据类型
Lua 中有 8 种类型,分别为:nil、boolean、number、string、userdata、function、thread 和 table。通过 type()函数可以查看一个数据的类型,例如,type(nil)的结果为 nil,type(123)的结果为 number。
数据类型 | 描述 |
---|---|
nil | 只有值 nil 属于该类,表示一个无效值,与 Java 中的 null 类似。但在条件表达式中相当于 false。 |
boolean | 包含两个值:false 和 true。 |
number | 表示双精度类型的实浮点数。 |
string | 字符串,由一对双引号或单引号括起来。当一个字符串包含多行时,可以在第一行中以[[开头,在最后一行中以]]结尾,那么在[[与]]括起来的这多行内容就是一个字符串。换行符为字符串”\n”。 |
table | 类似于 Java 中的数组,但比数组的功能更强大,更灵活。 |
function | 由 C 或 Lua 编写的函数。 |
thread | 协同线程,是协同函数的执行体,即正在执行的协同函数。 |
userdata | 一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据存储到 Lua 变量中调用。 |
3️⃣标识符
程序设计语言中的标识符主要包含保留字、变量、常量、方法名、函数名、类名等。Lua 的标识符由字母、数字与下划线组成,但不能以数字开头。Lua 是大小写敏感的。
🍀(1)保留字
Lua 常见的保留字共有 22 个。不过,除了这 22 个外,Lua 中还定义了很多的内置全局变量,这些内置全局变量的一个共同特征是,以下划线开头后跟全大写字母。所以我们在定义自己的标识符时不能与这些保留字、内置全局变量重复。
and | break | do | else |
---|---|---|---|
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while | goto |
🍀(2)变量
Lua 是弱类型语言,变量无需类型声明即可直接使用。变量分为全局变量与局部变量。
Lua 中的变量默认都是全局变量,即使声明在语句块或函数里。全局变量一旦声明,在当前文件中的任何地方都可访问。局部变量 local 相当于 Java 中的 private 变量,只能在声明的语句块中使用。
🍀(3)动态类型
Lua 是动态类型语言,变量的类型可以随时改变,无需声明。
4️⃣运算符
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua 提供了以下几种运算符类型:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 其他运算符
🍀(1)算术运算符
下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为 10,B 的值为 20:
操作符 | 描述 | 示例 |
---|---|---|
+ | 加法 | A + B 输出结果 30 |
- | 减法 | A - B 输出结果 -10 |
* | 乘法 | A * B 输出结果 200 |
/ | 除法 | 5 / 2 输出结果 2.5 |
% | 取余 | B % A 输出结果 0 |
^ | 乘幂 | A^2 输出结果 100 |
- | 负号 | -A 输出结果 -10 |
// | 整除运算符 (>=lua5.3) | 5//2输出结果 2 |
注意:
- SciTE 对 Lua 支持的目前最高版本为 5.1,而整除运算符//需要在 Lua5.3 版本以上,所以当前 SciTE中无法看到效果。
- 在命令行模式中,直接输入变量名回车,即相当于 print()函数输出该变量。
🍀(2)关系运算符
下表列出了 Lua 语言中的常用关系运算符,设定 A 的值为 10,B 的值为 20:
操作符 | 描述 | 示例 |
---|---|---|
== | 等于 | (A == B) 为 false。 |
~= | 不等于 | (A ~= B) 为 true。 |
> | 大于 | (A > B) 为 false。 |
< | 小于 | (A < B) 为 true。 |
>= | 大于等于 | (A >= B) 返回 false。 |
<= | 小于等于 | (A <= B) 返回 true。 |
🍀(3)逻辑运算符
注意,Lua 系统将 false 与 nil 作为假,将 true 与非 nil 作为真,即使是 0 也是真。
下表列出了 Lua 语言中的常用逻辑运算符,设定 A 的值为 true,B 的值为 false:
操作符 | 描述 | 示例 |
---|---|---|
and | 逻辑与 | (A and B) 为 false。 |
or | 逻辑或 | (A or B) 为 true。 |
not | 逻辑非 | not(A and B) 为 true。 |
🍀(4)其他运算符
下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符:
操作符 | 描述 | 示例 |
---|---|---|
…(两个点) | 字符串连接符 | a…b ,其中 a 为 "Hello " , b 为 “World”, 输出结果为 “Hello World”。 |
# | 返回字符串或表的长度 | #“Hello” 返回 5。 |
5️⃣函数
Lua 中函数的定义是以 function 开头,后跟函数名与参数列表,以 end 结尾。其可以没有返回值,也可以一次返回多个值。
🍀(1)固定参函数
Lua 中的函数在调用时与 Java 语言中方法的调用是不同的,其不要求实参的个数必须与函数中形参的个数相同。如果实参个数少于形参个数,则系统自动使用 nil 填充;如果实参个数多于形参个数,多出的将被系统自动忽略。
🍀(2)可变参函数
在函数定义时不给出具体形参的个数,而是使用三个连续的点号。在函数调用时就可以向该函数传递任意个数的参数,函数可以全部接收。
🍀(3)可返回多个值
Lua 中的函数一次可以返回多个值,但需要有多个变量来同时接收。
🍀(4)函数作为参数
Lua 的函数中,允许函数作为参数。而作为参数的函数,可以是已经定义好的普通函数,也可以是匿名函数。
6️⃣流程控制语句
Lua 提供了 if 作为流程控制语句。
🍀(1)if 语句
Lua 提供了 if…then 用于表示条件判断,其中 if 的判断条件可以是任意表达式。Lua 系统将 false与 nil 作为假,将 true 与非 nil 作为真,即使是 0 也是真。
需要注意,Lua 中的 if 语句的判断条件可以使用小括号括起来,也可以不使用。
🍀(2)if 嵌套语句
Lua 中提供了专门的关键字 elseif 来做 if 嵌套语句。注意,不能使用 else 与 if 两个关键字的联用形式,即不能使用 else if 来嵌套 if 语句。
7️⃣循环控制语句
Lua 提供了四种循环控制语句:while…do 循环、repeat…until 循环、数值 for 循环,及泛型 for 循环。同时,Lua 还提供了 break 与 goto 两种循环流程控制语句。
🍀(1)while…do
只要 while 中的条件成立就一直循环。
🍀(2)repeat…until
until 中的条件成立了,循环就要停止。
🍀(3)数值 for
这种 for 循环只参用于循环变量为数值型的情况。其语法格式为:
for var=exp1, exp2, exp3 do
循环体
end
var 为指定的循环变量,exp1 为循环起始值,exp2 为循环结束值,exp3 为循环步长。步长可省略不写,默认为 1。每循环一次,系统内部都会做一次当前循环变量 var 的值与 exp2 的比较,如果 var 小于等于 exp2 的值,则继续循环,否则结束循环。
🍀(4)泛型 for
泛型 for 用于遍历 table 中的所有值,其需要与 Lua 的迭代器联合使用。后面 table 学习时再详解。
🍀(5)break
break 语句可以提前终止循环。其只能用于循环之中。
🍀(6)goto
goto 语句可以将执行流程无条件地跳转到指定的标记语句处开始执行,注意,是开始执行,并非仅执行这一句,而是从这句开始后面的语句都会重新执行。当然,该标识语句在第一次经过时也是会执行的,并非是必须由 goto 跳转时才执行。
语句标记使用一对双冒号括起来,置于语句前面。goto 语句可以使用在循环之外。
注意,Lua5.1 中不支持双冒号的语句标记。
后记
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
更多推荐
所有评论(0)