一 、简介
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。
二、设计目的
其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
三、特性
- 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
- 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
- 其它特性:
- 支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
- 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
- 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
- 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
四、应用场景
- 游戏开发
- 独立应用脚本
- Web 应用脚本
- 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
- 安全系统,如入侵检测系统
五、安装
安装命令如下:
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz tar xf lua-5.3.5.tar.gz cd lua-5.3.5 make linux test
我报了下面的错
这个错是因为缺少readline
相关的库才导致的,遂安装libreadline-dev
,安装命令如下:
yum install readline-devel
然后再重新执行命令,出现下面页面就成功了
我发现我的版本已经是最新不用换了,在官网有说明如果Lua版本还是原来系统自带的版本,需要替换原来系统自带的lua,执行如下命令:
rm -rf /usr/bin/lua ln -s /usr/local/gupao/lua-5.3.5/src/lua /usr/bin/lua
六、Lua常用操作
教程网址:https://www.runoob.com/lua/lua-basic-syntax.html
lua -i
Lua 数据类型
Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。
Lua 变量
变量在使用前,需要在代码中进行声明,即创建该变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nil。
例子:
-- test.lua 文件脚本 a = 5 -- 全局变量 local b = 5 -- 局部变量 function joke() c = 5 -- 全局变量 local d = 6 -- 局部变量 end joke() print(c,d) --> 5 nil do local a = 6 -- 局部变量 b = 6 -- 对局部变量重新赋值 print(a,b); --> 6 6 end print(a,b) --> 5 6
七、脚本编程
上面我只简单的操作几个,在菜鸟教程里面有很多操作命令方法,如果有兴趣可以自己进去看,Lua其实可以和java样将命令写到一个文件中,并且可以在一个脚本文件引入另一个脚本文件,可以理解成java中的导包,接下来就是要玩这个功能;进入我自己创建的lua目录
然后在这个目录中编辑一个文件叫course.lua
内容如下
--定义一个对象 local course = {} --定义一个方法 function course.courseName(id) if id==1 then return "1" else return "2" end end return course
接着再来创建一个名字叫transcript.lua
[root@iZwz9fiurnr72olcv1lnmjZ lua]# vi course.lua
--导入course.lua local cr = require("course") --调用courseName方法 local result = cr.courseName(1)
print(result)
lua transcript.lua