当前位置: 首页 > 科技观察

Lua基础:浅谈Table的几种构造方法

时间:2023-03-12 07:47:58 科技观察

之前对Lua的研究只是纸上谈兵,没有真正的项目实践。现在公司的项目基本都是用Lua开发的。是时候补上我蹩脚的Lua知识了。基本的数据类型、表达式、循环结构等就不说了,这么简单的东西会被大家喷的。今天要说的是表格的几种构造方法。0.Lua调试工具——LuaEditor首先,如果你是第一次接触Lua,请添加最基本的Lua基础语法(小若:OO!),然后下载一个LuaEditor工具来查看Lua执行效果,当然也可以调试,本文不讲解这个工具。下载地址:http://www.bego.cc/file/22357242当然也可以百度。1、什么是表?Table是Lua中最复杂最大的数据结构。Lua本身并不是一门面向对象的语言,但是深深沉迷于面向对象编程的程序员可以借助table来模拟面向对象编程。最简单的,我们可以把表格理解为一个数组,最复杂的,我们可以把表格理解为“万物皆有灵”,因为它可以创造出很多你想象不到的东西。一句话,自由度非常大~!2.如何创建表?创建表是一件非常复杂的事情。我不知道你是否能忍受。试一试,如下所示:locala={}locala={}这将创建一个表。3.如何初始化一张表?虽然创建表已经很复杂了,但更复杂的事情还在后头。如何初始化一个表?看下面的代码:locala={["x"]=12,["mutou"]=99,[3]="hello"}print(a["x"]);在LuaEditor中新建一个lua文件,输入上面的代码,保存,然后按F5运行,我们会看到输出窗口输出了一个数字:12。有点神奇,感觉就像定义了一个数组,是不是?表格之间的元素用逗号分隔,["x"]=12表示构造一个表格元素,下标为"x",取值为12。哇~!我就等解说员问这个问题,解说员你个白痴,我只说table就像一个数组,没说是数组,table几乎支持所有类型的下标,包括函数。4.还有一种更简洁的方式。这种初始化方法似乎太复杂了。有更简单的方法吗?看下面的代码:locala={x=12,mutou=99,[3]="hello"}print(a["x"]);运行结果还是输出12,也就是说对于字符串下标,我们可以省略方框和双引号,但是数字下标就没有了,大家不要搞混了。然而,调用a["x"]也很烦人,不是吗?程序员很懒,所以Lua支持这样调用:locala={x=12,mutou=99,[3]="hello"}rint(a.x);输出还是12,也就是说,对于字符串下标,可以直接用a.x的形式调用,也省去了方框和双引号。初始化和调用的规则是一样的,免得大家一头雾水。记住,是字符串下标。做吧。请记住,字符串下标就是这样做的。请记住,字符串下标就是这样做的。5.如果你想要一个默认的数字索引怎么办?如果说大家习惯了数组,用数字作为下标,就不想一个一个定义数字了,比如:locala={[1]=12,[2]=43,[3]=45,[4]=90}没关系,Lua为懒惰的程序员提供了另一个trick,如下:locala={12,43,45,90}print(a[1]);看看a[1]的输出值是不是12?再次警告,表就像一个数组,但它绝对不是数组。table的首索引下标默认是1,很多相关的函数也是假设table的首索引下标是1,所以大家一定要遵守这个规则。6、比较强大的应用的table可以放什么,当然也可以放table,如下:locala={{x=1,y=2},{x=3,y=10}}print(a[1].x);

我们定义了一个表,命名为a,表中有两个元素,是两个没有名字的表。根据第5条提到的规则,没有display指定下标,那么lua会默认给table的元素分配一个下标(从1开始)。因此,a的首元素为{x=1,y=2},调用a首元素的方式为:a[1]由于a[1]是另外一张表,所以再调用a的值表的x下标:a[1].x即可。7.更强大应用程序的函数下标让我们尝试一些更有趣的事情,使用函数作为表的下标:
functiontest()print("HelloTable");endlocala={[test]=1}print(a[test]);
定义了一个函数test,然后以test为下标,定义了table的一个元素,值为1,很奇怪是不是?不过有时候这真的很有用,这里就不多解释了。OK,说了这么多桌子的构造方式有点累了,晚安。本文来自【笨木头与游戏开发】原文地址:http://www.benmutou.com/archives/627