Lua(五)

一 、简介

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 -v

我发现我的版本已经是最新不用换了,在官网有说明如果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 提供了交互式编程模式。可以在命令行中输入程序并立即查看效果,这种编程模式类似我们控制台操作,Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:
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)

 

 

 

 

执行 course.lua : 用命令
lua transcript.lua

 

 

 

 

 

 
posted @ 2021-06-26 18:44  童话述说我的结局  阅读(155)  评论(0编辑  收藏  举报