之前对于Lua的研究都是纸上谈兵,没有真正的项目练手,现在公司的项目基本上都是用Lua开发,是时候补充一下我那蹩脚的Lua知识了。
基础数据类型、表达式、循环结构什么的我就不说了,这么简单的东西说了也要被大家喷。
今天我想说说table的几种构造方式。
0.Lua调试工具——LuaEditor
首先,如果你是第一次接触Lua,请补充一下Lua的最基本之中的基础语法(小若:O O!),然后下载一个LuaEditor工具,用来查看Lua执行效果,当然也可以调试,本篇内容不解释这个工具。可以百度一下这个工具。
1.什么是table?
table是Lua最复杂最强大的数据结构,Lua本身并不是面向对象语言,但是对面向对象中毒比较深的程序员,可以借助table”完美”地模拟面向对象编程。最简单地,我们可以把table理解为数组,最复杂的,我们可以把table理解为”世间万物”,因为它可以创造出很多你想象不到的东西。一个字,自由度非常大~!(小若:一个字,你妹~!)
2.如何创建一个table?
创建table是一件很复杂的事情,不知道大家顶不顶得住,试试看,如下:
复制代码 代码如下:
local a = {}
这样就创建了一个table了。
(小若:噗,真够复杂的…啊,你妹啊,复杂你个头!)
3.如何初始化一个table
嗷,虽然创建table已经很复杂了,更复杂的还在后面,怎么初始化table?看看下面的代码:
复制代码 代码如下:
local a = {["x"] = 12, ["mutou"] = 99, [3] = "hello"}
print(a["x"]);
在LuaEditor中创建一个lua文件,输入以上代码,保存,然后按F5运行,我们将看到输出窗口输出了一个数字:12。
这挺神奇的,感觉就像是在定义数组,不是吗?
table间的元素用逗号分隔,["x"] = 12代表构造一个table元素,下标为”x”,值为12。(小若:为毛数组下标可以是字符串?)
嗷~!我就等旁白问这个问题,旁白你笨蛋啊,我只是说table像数组,我没有说它就是数组,table支持几乎是所有类型的下标,包括函数。
(小若:。。。以后我不会中计了,喵…)
4.有更简洁的方式
这种初始化方式看起来太复杂了,有没有简单点的?看看下面的代码:
复制代码 代码如下:
local a = {x = 12, mutou = 99, [3] = "hello"}
print(a["x"]);
运行结果仍然是输出12,也就是说,对于字符串下标,我们可以省略方框和双引号,但是数字下标不可以,千万不要搞混了。
但是,a["x"]这种调用方式也很烦人不是吗?程序员都很懒的,所以Lua支持一下这种方式的调用:
复制代码 代码如下:
local a = {x = 12, mutou = 99, [3] = "hello"}
print(a.x);
输出结果仍然是12,也就是说,对于字符串下标,可以直接用a.x的形式调用,也是省略了方框和双引号,初始化和调用方式的规则一样,这样大家就不会搞混了,记住,是字符串下标才这么做。
记住,是字符串下标才这么做。
记住,是字符串下标才这么做。(小若:你再说一句试试,我保证以后不帮你吐槽。)
5.想要默认数字索引怎么办?
如果说,大家习惯了数组,用数字下标,又不想自己一个个数字地定义,比如:
复制代码 代码如下:
local a = {[1] = 12, [2] = 43, [3] = 45, [4] = 90}
没关系,Lua又为爱偷懒的程序员提供了一招,如下:
复制代码 代码如下:
local a = {12, 43, 45, 90}
print(a[1]);
看看a[1]输出的值是不是12?(小若:但是12的下标应该是0啊,数组下标是从0开始计算的)
再一次警告旁白,table类似数组,但它绝对不是数组。
table默认的第一个索引下标是1,并且很多相关的函数也假设table的第一个索引下标为1,所以大家最好遵守这个规则。
6.更强大的应用之table的table
table什么都能放,当然也能放table了,如下:
复制代码 代码如下:
local a = {
{x = 1, y = 2},
{x = 3, y = 10}
}
我们定义了一个table,命名为a,table有两个元素,分别是两个没有名字的table,根据第5条所说的规则,没有显示指定下标,那Lua就会默认给table的元素赋予下标(从1开始)。
因此,a的第一个元素就是{x = 1, y = 2},调用a的第一个元素的方式为:a[1]
由于a[1]又是一个table,所以,再次调用table的x下标的值:a[1].x
这样就OK了。
7.更强大的应用之函数下标
我们最后来试试更好玩的,用一个函数当table的下标:
复制代码 代码如下:
function test()
print("Hello Table");
end
local a = {[test] = 1}
print(a[test]);
定义了一个函数test,然后用test作为下标定义了table的一个元素,值为1。
这很奇怪不是吗?但是有时候这样确实很有用,这里暂时不解释。
OK,关于table的构造方式,暂时说这么多,有点累了,晚安。
Lua,table,构造方式
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 群星《赤热 电视剧音乐原声》[320K/MP3][427.21MB]
- 周华健.1996-爱的光【滚石】【WAV+CUE】
- 杨宗宪.1996-想啥人怨啥人等啥人【有容唱片】【WAV+CUE】
- 郑秀文.2024-Best.Concert.Live【华纳】【FLAC分轨】
- 《Pax Dei》配置要求一览
- 《过山车之心2》存档位置介绍
- 《三国志8 REMAKE》评测:自定义的三国演义
- 群星《少年白马醉春风 网剧OST原声专辑》[320K/MP3][117.05MB]
- 群星《少年白马醉春风 网剧OST原声专辑》[FLAC/分轨][621.04MB]
- 《魏佳艺5CD合集》[WAV分轨][3.8G]
- CSGO职业选手donk怎么样 2024最新donk个人资料介绍
- CSGO职业选手NiKo怎么样 2024最新Niko个人资料介绍
- 剑网3丝路风语PVE焚影怎么打 丝路风语PVE焚影圣诀手法配装攻略
- [老虎魚古典名盘]心碎SACD浪漫小提琴之声[DSF]
- Queen(皇后乐队)《GreatestHitsII》[SACD-DSF]