在 Lua
语言中,简单地使用整数来索引表即可实现数组。因此,数组的大小不用非得是固定的,而是可以按需增长的。通常,在初始化数组时就间接地定义了数组的大小。例如,在执行了以下的代码后,任何访问范围 1-1000
之外的元素都会返回 nil
而不是 0
:
local a = {} -- 新数组 for i = 1, 1000 do a[i] = 0 end
长度运算符( #
)正是基于此来计算数组大小的:
print(#a) --> 1000
可以使用 0
、 1
或其他任何值来作为数组的起始索引:
a = {} for i = -5, 5 do a[i] = 0 end
不过,在 Lua
语言中一般以 1
作为数组的起始索引, Lua
语言的标准库和长度运算符都遵循这个惯例。如果数组的索引不从 1
开始,那就不能使用这些机制。
可以通过表构造器在一句表达式中同时创建和初始化数组:
squares = {1, 4, 9, 16, 25, 36, 49, 64, 81}
这种表构造器根据需求要多大就能多大。在 Lua
语言中,利用数据描述文件创建包含几百万个元素组成的构造器很常见。