• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua简介

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Lua语言是在993年由巴西一个大学研究小组发明,其设计目标是作为嵌入式程序移植到其他应用程序

它们由C语言实现的,虽然简单小巧但是功能强大,所以许多应用都选用它做脚本语言,

尤其是在游戏领域,例如大名鼎鼎的暴雪公司将Lua语言引入到“魔兽世界”这款游戏中,

Rovio公司将Lua语言作为“愤怒的小鸟”这款火爆游戏的关卡升级引擎,web服务软件将Nginx将Lua语言作为扩展,增强自身功能。

Redis将Lua作为脚本语言可帮助开发者定制自己的Redis命令,在这之前,必须修改源码。

一、Lua的安装及部署

curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar zxf lua-5.3.4.tar.gz
cd lua-5.3.4
make linux test
make install

在make linux test时报错:

make[2]: *** [lua.o] 错误 1
make[2]: 离开目录“/root/lua-5.3.4/src”
make[1]: *** [linux] 错误 2
make[1]: 离开目录“/root/lua-5.3.4/src”
make: *** [linux] 错误 2

这个是缺少readline-devel这个包。

 

二、数据类型及其逻辑处理

Lua语言提供了如下几种数据类型:booleans(布尔)、numbers(数值)、strings(字符串)、tables(表格),

和许多高级语言相比,相对简单。下面将结合例子对Lua的基本数据类型和逻辑处理进行说明。

1.字符串

下面定义一个字符串类型的数据:

> local string val = "world"
> print(val)
world

其中,local代表val是一个局部变量,如果没有local代表是全局变量,print函数可以打印数量的值。

 

2.数组

在Lua中,如果要使用类似数组的功能,可以用tables类型,下面代码使用定义了一个tables类型的变量myArray,

但和大多数编程语言不同的是,Lua的数组下标从1开始计算:

> local tables myArray = {'redis','jedis',true,88.0}
> print(myArray[3])
true

如果想遍历这个数组,可以使用for和whlie,这些关键字和许多编程语言是一致的。

(1)for

下面代码会计算1到100的和,关键字for以end作为结束符。

#!/usr/local/bin/lua
local int sum = 0
for i =1,100
do
    sum = sum + i
end
print(sum)

执行结果:
[root@Redis script.lua]# lua 1.lua
5050

要遍历myArray,首先要知道tables的长度,只需要在变量前加一个#号即可:

> for i = 1,#myArray
>> do
>> print(myArray[i])
>> end
redis
jedis
true
88.0

除此之外,Lua还提供了内置函数ipairs,使用for index,value ipairs(tables)可以遍历出所有的索引下标和值:

> for index,value in ipairs(myArray)
>> do
>> print(index)
>> print(value)
>> end
1
redis
2
jedis
3
true
4
88.0

 

(2)while

下面代码同样会计算1到100的和,只不过使用的是while循环,while循环同样以end作为结束符。

#/uar/local/bin/lua
local int sum = 0
local int i = 0
while i <= 100
do
    sum = sum + i
    i = i + 1
end
print(sum)

#执行结果:
[root@Redis script.lua]# lua 2.lua
5050

 

(3)if else

要确定数字中书否包含了jedis,有则打印true,注意if以end结尾,if后紧跟then:

#!/usr/local/bin/lua
local tables myArray = {"redis","jedis",true,88.0}
for i = 1,#myArray
do
    if myArray[i] == "jedis"
    then
        print("true")
        break
    else
        --do nothing
    end
end

#执行结果
[root@Redis script.lua]# lua 3.lua
true

3.哈希

如果使用类似哈希的功能,同样可以使用tables类型,例如下面代码定义了一个tables,

每个元素包含了key和value,其中strings1 ..strings2是将两个字符串进行连接:

local tables user_1 = (age = 28, name = "kebi")
--user_1 age is 25
print("user_1 age is " ... user_1["age"])

如果要遍历user_1,可以使用Lua的内置函数pairs:

for key,value in pairs(user_1)
do print(key .. value)
end

 

4.函数定义

在Lua中,函数以function开头,以end结尾,中间部分是函数体。

#!/usr/local/bin/lua
function contact(str1,str2)
    return str1 .. str2
end
print(contact("hello","world"))

执行结果:

[root@Redis script.lua]# lua 5.lua
helloworld

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Nginx+Lua系列:Nginxapiforlua发布时间:2022-07-22
下一篇:
Lua中“.”调用方法与“:”调用方法的区别发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap