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

lua学习笔记(1)

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

一、table
Table=数组+映射
在lua中,table是数组和映射为一体的数据类型,table既可以当做数组使用,也可以当做映射来使用。

1、声明一个table类型
用花括弧{}来声明一个table
例:a={}

2、table的赋值
table可以在定义的时候直接赋值,例:
a={1,2,3,}
也可以单独赋值,但是注意table的下标必须是连续的,且从1开始,没有赋值的下标的值是nil,例:
a={}
a[1]=1
a[3]=2
则这时候a[2]就是nil

3、使用table的映射功能([key]=value)
a={1,2,[“hello”]=3}或
a[1]=1
a[2]=2
a[“hello”]=3
如果使用映射功能的话,可以用a.key表示value,也可以用a[key]表示value

二、lua中的函数
1、定义一个add函数
例1、function是函数关键字,add是函数名,(a,b)是函数参数,end是函数结尾。
function add(a,b)
return a+b
end

2、还可以将整个函数赋值给一个变量,这就相当于C语言里面的函数指针
add =function (a,b)
return a+b
end

3、lua的函数可以返回多个结果
例:可以返回多个结果
add=function (a,b)
return a+b,a-b
end

4、在lua中可以一次给多个变量赋值
例:
a,b=1,2 //a是1,b是2
a,b=1,2,3 //a是1,b是2,3是多余的,但不出错
a,b=1 //a是1,b是nil

5、在lua中,交换两个数的数值的时候,可以不用中间变量
例:
a,b=b,a //就直接交换两个变量的值了

三、lua中的流程控制
1、if语句

if 条件 then
表达式
elseif 条件 then
表达式
else
表达式
end

2、while语句

while 条件 do
表达式
end

3、for循环
其中步长缺省的话是1,起始值可以比终值大则就表示升序。起始值比终值小就表示降序,降序的时候步长要为负数。假如说升序的话,起始值比终值要大,则就不打印
for 循环变量=起始值,终值,步长 do
循环体
end

例1:打印1,3,5,7,9.

例2:倒序打印10到1

4、for循环的泛型遍历
lua中的迭代器:pairs和ipairs
在table中有两部分,数组+映射,如果我们要遍历一个table的话,可以用pairs和ipairs,这两个函数是lua内置的函数。遍历table的时候,遍历的顺序是不确定的。
pairs:遍历table中的所有内容
ipairs:遍历table中的数组部分
例:使用ipairs只输出数组部分,结果只输出1和2

例2、用pairs输出table的所有内容

四、lua中的系统库
1、table中的系统函数
例:运行下面的程序,输出table中的函数

结果:

可以看到,table中的函数如上所示。

例2、

结果:

例3、如何删除table中的一个映射
只需要把该key的值设置成nil,则该映射就被删除了

结果:
可以看到把k3设置成nil,就相当于删除了k3。

2、转换函数
tostring:将整数转换成字符串
tonumber:将字符串转换成整数
例:

结果:

3、string中的函数
例:将string中的内置函数打印出来

结果:

五、总结
1、table
table是数组和映射的集合,且table的下标从1开始,数组下标必须是连续的,不然就变成映射了。
2、万物皆值
在lua中所有东西都是值,函数也是值。
3、lua支持多个返回值
4、lua中的逻辑运算就是and,or,not
5、lua中的字符串链接运算符是”..”
6、lua中的作用域用local控制,而且local还可以优化代码
7、lua中的迭代器,ipairs用来遍历数组,pairs用来遍历table


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Lua生成Guid(uuid)发布时间:2022-07-22
下一篇:
Redis进阶实践之七Redis和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