Lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础。其他语言提供的数据结构,如数组、记录、线性表、队列、集合等,在Lua中都可以通过table来表示。
Lua的table来实现这些结构效率高。
数组
使用整数索引table即可在Lua中实现数组。因此,数组没有一个固定的大小,可以根据需要增长。
a={} --新建一个数组
for i = 1, 1000 do
a[i] = 0
end
任何对字段范围1-1000之外的访问都会返回一个nil
长度操作符(#)依赖于这个事实来计算数组大小:
print(#a) --1000
可以使用0、1或其他任意值来作为数组的起始索引:
--使用索引值-5 - 5来创建一个数组
a = {}
for i = -5, 5 do
a[i] = 0
end
Lua中的习惯一般是以1作为数组的起始索引。Lua库和长度操作符都遵循这个约定。如果数组不是从1开始的,#获取数组长度就不能用了。
通过table的构造式,可以在一句表达式中创建并初始化数组:
squares = { 1, 4, 9, 16, 25, 36, 49, 64, 81 }
这种构造式可以根据要求变得更长。