1.1,lua的介绍

 Lua 是一个小巧的脚本语言它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。

简单来说:

 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

lua 语言具有以下特性

支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;

闭包(closure):通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。;函数也可以看做一个值;

 提供多线程(协同进程,并非操作系统所支持的线程)支持;应用场景

游戏开发

独立应用脚本 Web 应用脚本

扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench 安全系统,如入侵检测系统

redis中嵌套调用实现类似事务的功能

web容器中应用处理一些过滤 缓存等等的逻辑,例如nginx。

1.2,lua的安装

有linux版本的安装也有mac版本的安装。。我们采用linux版本的安装,首先我们准备一个linux虚拟机。

安装步骤,在linux系统中执行下面的命令。

yum install -y gcc
yum install -y libtermcap-devel ncurses-devel libevent-devel readline-devel
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar -zxf lua-5.3.5.tar.gz
cd lua-5.3.5
make linux test
make install

1.3 快速入门

创建hello.lua文件,内容为

print("hello");

保存。执行命令

lua helloworld.lua

输出为hello

1.4 lua的基本语法

lua有交互式编程和脚本式编程。

交互式编程就是直接输入语法,就能执行。

脚本式编程需要编写脚本,然后再执行命令 执行脚本才可以。

一般采用脚本式编程。(例如:编写一个hello.lua的文件,输入文件内容,并执行lua hell.lua即可)

1.4.1 注释 

--单行注释

--[[
多行注释
多行注释
--]]

1.4.2 关键字

关键字就好比java中的 break if else等等一样的效果。lua的关键字如下:

lua语言 如何标识or lua语言local_应用程序

1.4.3 定义变量

全局变量,默认的情况下,定义一个变量都是全局变量, 如果要用局部变量 需要声明为local.例如: 如果变量没有初始化:

-- 全局变量赋值
a=1
-- 局部变量赋值
local b=2

则 它的值为nil 这和java中的null不同。

1.4.4 Lua中的数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结 果返回。

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

lua语言 如何标识or lua语言local_Lua_02

1.4.5 流程控制

如下:类似于if else

--[ 0 为 true ]
if(0) then
print("0 为 true")
else
print("0 不为true")
end

1.4.6 函数

lua中也可以定义函数,类似于java中的方法。例如:

--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)
if (num1 > num2) then
result = num1;
else
result = num2;
end
return result;
end
-- 调用函数
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))

执行之后的结果:

两值比较最大值为 10
两值比较最大值为 6

1.4.7 require 函数

require 用于 引入其他的模块,类似于java中的类要引用别的类的效果。

用法:

require("<模块名>")
--或者
require "<模块名>"