首先说明,下标0完全没问题,只是习惯问题。但是这个习惯会导致一不小心就犯错,比如每次存取的不是单个数而是一组数:
for i = 1, x do
local idx = i * 3
t[idx] = foo
t[idx + 1] = bar
t[idx + 2] = baz
end
写起来非常自然,但是注意,此时t的下标从3开始了,这就会导致#t
值为0。非常容易忽视。不过其实#号取数组长度本身就有nil缺陷,所以最佳做法还是另外开个值存长度,把它看成类似c语言数组那种半成品就行了。