Table(表)
table 是 lua 中唯一的数据结构,可以用于表示 数组,字典与结构体。它非常强大,可以储存任何数据类型。
table 的数据单元为一对键值。 table 是不固定大小的,你可以根据自己需要进行扩容。
构造方式
table = {} --空 tabletable = {1, 2, 3,} -- arraytable = {["1"] = 1, ["2"] = 2, ["3"] = 3,} --diractorytable.x = 1 --strcut
构造方式有多种
- 记录式(数组较为常见)
table = {1, 2, 3,}
- 列表式
table = {x = 1, y = 2, z = 3,}
- 通用形式(字典较为常见)
table = {["1"] = 1, ["2"] = 2, ["3"] = 3,}
由于在查询键的类型可以出现不同,如 number 与 string 之间的转换,需要注意。
同时 整型类型 与 浮点类型之间在table中是一致的,浮点型 2.0 等于 整型 2,不存在分歧问题,table会将整型浮点转为 number
遍历
table = {}
for i = 1, 1000 dotable[i] = i
end--遍历
for i = 1, #table doprint(table[i])
end
table 表示数组时,索引值从 1 开始,通过 #
来获得数组是大小,#
只能获得数组序列的大小,且序列中间不能为 nil
。
nil
意味移除该元素,所以当不需要此数据时,将其设为 nil
,cg会将其收回。
print(table[#table]) --输出最后一个值
table[#table] = nil --移除最后一个元素
table[#table + 1] = value --在末尾添加元素
for 遍历 table 的两种方式
- ipairs 迭代器 - 主要用于数组的迭代
- pairs 迭代器 - 主要用于字典的迭代
t = {1, 2, 3,}
--[[i 为索引v 为值
]]
for i, v in ipairs(t) doprint(t[i])
end
--[[k 为键 v 为值
]]
for k, v in pairs(t) doprint(k .. " " .. v)
end
table函数
方法 | 用途 |
---|---|
table.concat(table, [, sep, [, start [, end]]]) | concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。 |
table.insert (table, [pos,] value): | 在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾. |
table.remove (table [, pos]) | 返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起。 |
table.sort (table [, comp]) | 对给定的table进行升序排序。 |