Lua高性能脚本语言快速入门

简介: Lua高性能脚本语言快速入门

1 Lua介绍

Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面。Lua一般用于嵌入式应用,现在越来越多应用于游戏

当中,魔兽世界,愤怒的小鸟都有用到。本次学习是为redis一系列操作做技术储备.

优势:


1、Lua极易嵌入到其他程序,可当做一种配置语言。 2、提升应用性能,比如:游戏脚本,nginx,wireshark的脚本

3、兼容性强,可以直接使用 C 代码写的函数。比如corona 移动应用开发平台,跟PhonePap类似,不过使用Lua做开发语言,应用可以build到iOS,Android,kindle fire,nook平台; 服务器端应该也是Lua。

4、在给软件提供嵌入式脚本编程能力上,Lua是绝佳选择。


Lua脚本的作用:嵌入到应用程序中,给应用程序提供扩展功能。


2 Lua安装

依赖安装: yum install libtermcap-devel ncurses-devel libevent-devel readline-devel pcre-devel gcc openssl openssl-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

此时原来系统自带的lua其实是5.1.4,我们需要替换原来系统自带的lua:

rm -rf /usr/bin/lua
ln -s /usr/local/server/lua-5.3.5/src/lua /usr/bin/lua

查看版本

3 Lua常用知识

3.1 Lua案例

创建hello.lua文件,内容为

编辑文件hello.lua

vi hello.lua

在文件中输入:print("hello");

保存并退出。

执行命令 lua hello.lua

输出为:

Hello

效果如下:

lua有交互式编程(在控制台编写代码)和脚本式编程(在文件中写代码叫脚本编程)。

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

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

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

(1)交互式编程

Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。

Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:lua -i

如下图:

(2)脚本式编程

我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,例如上面入门程序中将

lua语法写到hello.lua文件中。

3.2 Lua语法

注释

一行注释:两个减号是单行注释:
--

多行注释:

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

定义变量

全局变量,默认的情况下,定义一个变量都是全局变量,

如果要用局部变量 需要声明为local.例如:

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

如果变量没有初始化:则 它的值为nil 这和java中的null不同。

如下图案例:

Lua中的数据类型

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

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

lua红有个type函数,能出对象的类型。

实例:

print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil

3.3 流程控制

3.3.1 if语句

Lua if 语句 由一个布尔表达式作为条件判断,其后紧跟其他语句组成。

语法:

if(布尔表达式)
then
--[ 在布尔表达式为 true 时执行的语句 --]
end

实例:

3.3.2 if…else语句

Lua if 语句可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码块。

语法:

if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end

实例:

3.3.3 while循环[满足条件就循环]

Lua 编程语言中 while 循环语句在判断条件为 true 时会重复执行循环体语句。 语法:

while(condition)
do
statements
end
实例:
a=10
while( a < 20 )
do
print("a 的值为:", a)
a = a+1
end

效果如下:

3.3.4 for循环

Lua 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。

语法: 1->10 1:exp1 10:exp2 2:exp3:递增的数量

for var=exp1,exp2,exp3
do
<执行体>
end

var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 “执行体”。exp3 是可选的,如果不指

定,默认为1。

例子:

for i=1,9,2
do
print(i)
end

for i=1,9,2 : i=1从1开始循环,9循环数据到9结束,2每次递增2

3.3.5 repeat…until语句

满足条件结束

Lua 编程语言中 repeat…until 循环语句不同于 for 和 while循环,for 和 while 循环的条件语句在当前循环执行开始

时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。

语法:

repeat
statements
until( condition )

案例:

3 函数

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

..:表示拼接

4 表

table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。

Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。

案例:

-- 初始化表
mytable = {}
-- 指定值
mytable[0]= "Lua"
-- 移除引用
mytable = nil

模块

(1)模块定义

模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件

里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。

创建一个文件叫module.lua,在module.lua中创建一个独立的模块,代码如下:

-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {}
-- 定义一个常量
module.constant = "这是一个常量"
-- 定义一个函数
function module.func1()
print("这是一个公有函数")
end
local function func2()
print("这是一个私有函数!")
end
function module.func3()
func2()
end
return module

由上可知,模块的结构就是一个 table 的结构,因此可以像操作调用 table 里的元素那样来操作调用模块里的常量或

函数。

上面的 func2 声明为程序块的局部变量,即表示一个私有函数,因此是不能从外部访问模块里的这个私有函数,必须

通过模块里的公有函数来调用.

(2)require 函数

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

用法:

require("<模块名>")
require "<模块名>"

两种都可以。

我们可以将上面定义的module模块引入使用,创建一个test_module.lua文件,代码如下:

-- test_module.lua 文件
-- module 模块为上文提到到 module.lua
require("module")
print(module.constant)
module.func3()


目录
相关文章
|
6月前
|
C语言
Lua快速入门教程1
Lua快速入门教程1
54 2
|
5月前
|
数据挖掘 Linux 数据处理
探索Linux下的Lua命令:轻量级脚本语言在数据处理和分析中的应用
**探索Linux上的Lua:轻量级脚本语言用于数据处理。Lua通过命令行解释器执行,适用于游戏开发、数据分析及自动化。特点包括小巧、高效、可扩展和动态类型。使用`lua`或`luajit`,配合-e、-l、-i参数执行脚本或互动模式。示例:执行`hello.lua`脚本打印&quot;Hello, Lua!&quot;。最佳实践涉及版本兼容、性能优化、使用C API、测试和文档编写。**
|
Ubuntu 网络协议 Linux
【Lua基础入门】解密世界上最快的脚本语言
【Lua基础入门】解密世界上最快的脚本语言
1677 1
|
存储 JavaScript Java
lua快速入门~在js基础上,知道Lua 和 Js 的不同即可
lua快速入门~在js基础上,知道Lua 和 Js 的不同即可
62 0
|
XML 存储 Java
【Lua基础 第1章】初识Lua脚本语言、数据类型、全局变量、关键字的使用
初识Lua脚本语言、数据类型、全局变量、关键字的使用
153 0
【Lua基础 第1章】初识Lua脚本语言、数据类型、全局变量、关键字的使用
|
存储 JavaScript 编译器
Lua脚本语言——Lua脚本基础语法
Lua脚本语言——Lua脚本基础语法
679 0
Lua脚本语言——Lua脚本基础语法
|
Java PHP Python
Lua快速入门
Lua快速入门
229 0
|
Java PHP Python
Lua快速入门
Lua快速入门
116 0
|
NoSQL 安全 Redis
Lua脚本快速入门
Lua脚本快速入门
2467 0
|
Web App开发 数据安全/隐私保护 芯片
二,ESP8266 GPIO和SPI和定时器和串口(基于Lua脚本语言)
我们写lua用这个软件 http://pan.baidu.com/s/1kVN09cr 密码:pfv7 如果点击的时候提示安装,,安装就行,,如果没有提示呢可以,按照下面链接的提示自己安装哈,,,,,或者自己百度 http://jingyan.
1486 0