脚本语言Lua的基础知识总结

目录

1、Lua环境安装

1.1、Windows版本安装

1.2、Linux版本的安装

2、Lua基础知识

2.1、基本语法

2.2、数据类型

2.3、变量

2.4、运算符

2.5、循环语句

2.6、条件语句

2.7、函数

2.8、模块

2.9、文件操作

3、最后


       Lua 语言是巴西里约热内卢天主教大学里的一个研究小组于 1993 年开发的,是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。很多项目中都使用到了Lua脚本,今天我们就来介绍一下Lua的一些基础知识。

1、Lua环境安装

1.1、Windows版本安装

       可以到这个地址去下载Windows版本的安装包:https://github.com/rjpcomputing/luaforwindows/releases,选择合适的windows版本安装即可。双击安装后会安装SciTE工具:

在该工具中可以编写lua脚本并运行脚本:

1.2、Linux版本的安装

下载源码包: curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
解压:tar zxf lua-5.3.0.tar.gz
安装readline库(若未安装)  :yum -y install readline-devel ncurses-devel
进入解压目录:cd lua-5.3.0
编译:make linux
安装:make install

2、Lua基础知识

2.1、基本语法

1)Lua支持交互式编程,在命令行中输入程序并立即查看效果;也支持脚本式编程,保存为后缀名为“.lua”的文件,执行脚本:lua xxx.lua,或在文件头加上#!/opt/lua-5.3.0/lua,直接执行:./xxx.lua。
2)Lua每条语句后面不必加分号“;”。
3)单行注释使用两个减号:--,多行注释使用:--[[ 多行注释]]--。
4)Lua是区分大小写的,一般以下划线开头连接一串大写字母的名字(如 _VERSION)被保留用于 Lua 内部全局变量。

2.2、数据类型

1)Lua中有8种基本类型:nil(空)、boolean、number(数字)、string、userdata(自定义类型)、function(函数)、thread和table(表),可以用type()函数来检查。
2)nil类型:表示一个无效值,它只有一个值nil。
3)boolean类型:Lua把false和nil看作是“假”,其他的都为“真”(eg:0、空字符串等为“真”)。
4)string类型:用单引号或双引号来表示,也可以用2个方括号“[[ ]]”表示“一块”字符串。
可以通过“..”作字符串连接,使用“#”来计算字符串的长度。
5)userdata类型:是用户自定义的数据,用来表示由应用程序或C语言库所创建的新类型,如:Struct和指针等。
6)function类型:函数也是一种类型,也就是所有的函数,它本身就是一个变量。
7)thread线程类型:表示执行的独立线路,用于执行协同程序。
8)tablbe类型:可看作“关联数组”,数组的索引可以是数字或者是字符串;不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始;且table不会固定长度大小,有新数据添加时其长度会自动增长;没初始化的 table 都是 nil。

2.3、变量

1)Lua是动态类型语言,变量不需要声明,不用类型定义,给一个变量赋值即创建了这个变量,访问一个没有初始化的变量也不会出错,只是得到的结果为:nil。
2)Lua中的变量除非用 local 显式声明为局部变量,否则全部是全局变量,即使变量在语句块或函数里。
3)Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量,如:a,b,c = 1,2,3。
4)当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
a)变量个数 > 值的个数 ,按变量个数补足nil
b)变量个数 < 值的个数,多余的值会被忽略

2.4、运算符

1)算术运算符:+、-、*、/、%(取余)、^(乘幂)、-(负号)。
2)关系运算符:==、~=(不等于)、<=、>=、<、>。
3)逻辑运算符:and、or、not(非)。
4)连接运算符:..(连接两个字符串)。如:“hello”..“Lua”  “helloLua”
5)一元运算符:#(计算表或字符串的长度)。
6)运算符优先级:^、not、-(负号)、* /、+ -、..、< > <= >= ~= ==、and、or。

2.5、循环语句

1)While循环

while conditions do
    statements
end

其中:用do 和 end 括起来的部分为语句块,类似于C++中用"{"和"}"括起来的部分。
2)For循环
a)数值for循环

for var=exp1 ,exp2 ,exp3 do
    loop-part
end

for将用exp3作为步进值从exp1(初始值)到exp2(终止值),执行loop-part,其中步进值可以省略,默认值为1。
b)范型for循环

for var1; var2 ... varN in表或者枚举函数do
    loop-part
end

注意项:控制变量是局部变量,且不能修改其值;可以用break来终止一个循环。
3)repeat…until

repeat
    statements
until conditions

循环语句可以嵌套。

2.6、条件语句

if conditions then
    part1
elseif conditions then
    part2
else
    partsend

1、Lua使用if..else执行条件控制语句

2、每条判断语句后面都要加“then”;
3、条件语句也可以进行嵌套,不支持switch语句。

2.7、函数

       函数的格式如下:

funetion function_name ( arg1 ,arg2... , argn )
    function_body
return result_paramsend

1)函数代码块以function关键字开头,后跟函数名、参数,以end关键字结尾。
2)Lua中除了在函数前面使用关键字local的为局部函数,其他都是全局函数。
3)result_params:函数返回值,Lua函数支持返回多个结果值,每个值以逗号隔开。
4)Lua中可以将函数作为参数传递给函数。
5)Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用三点 ... 表示函数有可变的参数。

2.8、模块

1)Lua模块类似于一个封装库,把一些公用的代码放在一个文件里,以API接口的形式在其他地方调用。模块也是由变量、函数等已知元素组成的table。
2)可以通过require函数来加载模块:require("<模块名>")。

2.9、文件操作

1)Lua I/O库用于读取和处理文件,分为简单模式、完全模式。
2)简单模式:拥有一个当前输入文件和一个当前输出文件,并对这些文件可以进行读写相关的操作。

--打开文件,filename为文件名,mode是打开文件的方式
file = io.open (filenane , mode)
--设置默认输入文件
io.input(file)
--设置默认输出文件
io.output(file)
--读取文件内容,param是读取的模式
io.read(param)
--在文件最后一行写入内容
io.write ( "--Test--")
--关闭文件
io.close(file)

3)完全模式:使用外部的文件句柄来实现。通常在需要同一时间处理多个文件时使用。
使用file:function_name代替io.function_name。

--打开文件
file = io.open (filename , mode)
--读取文件内容
file : read(param)
--在文件最后一行写入内容
file :write("--testr--")
--关闭文件
file : close (file)/

3、最后

       Lua脚本的加入,使得在很多应用中既可以减少开销又可以功能复用,为应用程序提供灵活的扩展和定制功能。它也是一个轻巧的脚本语言,值得更进一步学习与应用。

猜你喜欢

转载自blog.csdn.net/chenlycly/article/details/126083179