ipairs 按照索引从1开始遍历数组,递增遍历,遇到nil停止
pairs 迭代table 遍历表中所有的key和value

sum={"dj","old","22"}

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

sum[2]=nil
for k,v in ipairs(sum) do
print(v)
end

01:表的创建 (引用类型)

当我们为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素。如果没有指定的变量指向a,Lua的垃圾回收机制会清理相对应的内存。

sum={"dj","old","22"}
newSum=sum
print(sum[1])
print(newSum[1])
sum[1]="666"
print("...............")
print(sum[1])
print(newSum[1])
print("...............")
sum=nil
print(newSum[1])

02:Table 操作
连接:
table.concat (table [, sep [, start [, end]]]):
concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。

sum={"dj","old","22"}
print(table.concat(sum,",",1,2))
--dj,old

插入
table.insert (table, [pos,] value):
在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾.

sum={"dj","old","22"}
table.insert(sum,1,"112")
for k,v in pairs(sum) do
print(v)
end
--112
dj
old
22

删除
table.remove (table [, pos])
返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起。

sum={"dj","old","22"}
table.remove(sum,1)
for k,v in pairs(sum) do
print(v)
end
--old
--22

排序
table.sort (table [, comp])
对给定的table进行升序排序。

sum={5,8,9}
table.sort(sum)
for k,v in pairs(sum) do
print(v)
end
5
8
9

注意
我们获取 table 的长度的时候无论是使用 # 还是 table.getn 其都会在索引中断的地方停止计数,而导致无法正确取得 table 的长度。

function table_leng(t)
local leng=0
for k, v in pairs(t) do
leng=leng+1
end
return leng;
end