lua table

lua 表构造器

表构造器(Table Constructor)是用来创建和初始化表达式的。

空构造器

最简单的构造器是空构造器{}。

表构造器也可以用来初始化列表。

days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}

构造器的第一个元素的索引是1,不是0, 所以datys[1] = "Sunday"。

初始化记录式表
a = {x = 110, y = 20}

等价于

a = {}
a.x = 110
a.y = 20
混合记录式(record-style)和列表式(list-style)
polyline = {
	color = "blue",
	thickness = 2,
	{x = 0, y = 0}, -- polyline[1]
	{x = 1, y = 1}, -- polyline[2]
}

key值是字符串的时候是不需要加引号的。

数组、列表、序列

数组和列表直接使用整型作为索引即可。

获取序列的长度使用#
序列是连续的,中间不能有nil值。

a = {1, 2, 3, 4, 5}
for i=1, #a do
	print(a[i])
end
print(a[#a])   -- 输出最后一个元素
a[#a] = nil   -- 删除最后一个元素
a[#a + 1] = 'v'  -- 在最后增加一个元素 v

对于不连续的序列使用#操作是不可靠的.

> a = {10, 20, 30, nil, nil}
> #a
3

遍历表

可以使用pairs迭代器遍历表中的键值对。

t = {10, print, x = 12, k = 'hi'}

for k, v in pairs(t) do
        print(k, v)
end

1	10
2	function: 0x555ce712cd90
x	12
k	hi

遍历打印的顺序可能是随机的。但是每一个元素只会出现一次。

对于列表而言,可以使用ipairs迭代器。

t = {10, print, x = 12, k = 'hi'}
rint("=======================")
for k, v in ipairs(t) do
        print(k, v)
end

-- 只有前两个元素符合列表,所以只打印前两个元素
=======================
1	10
2	function: 0x555afadd3d90

使用for循环遍历。

print("***********************")

for i = 1, #t do
        print(i, t[i])
end
-- 只有前两个元素符合列表,所以只打印前两个元素
=======================
1	10
2	function: 0x555afadd3d90

从上面可以得出,对于序列可以使用for, ipairs进行遍历,对于字符、混合类型为key的表只能使用pair进行遍历。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值