本文共 1364 字,大约阅读时间需要 4 分钟。
ipairs 按照索引从1开始遍历数组,递增遍历,遇到nil停止
pairs 迭代table 遍历表中所有的key和valuesum={"dj","old","22"}for k,v in pairs(sum) doprint(v)endsum[2]=nilfor k,v in ipairs(sum) doprint(v)end
01:表的创建 (引用类型)
当我们为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素。如果没有指定的变量指向a,Lua的垃圾回收机制会清理相对应的内存。
sum={"dj","old","22"}newSum=sumprint(sum[1])print(newSum[1])sum[1]="666"print("...............")print(sum[1])print(newSum[1])print("...............")sum=nilprint(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) doprint(v)end--112djold22
删除
table.remove (table [, pos]) 返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起。sum={"dj","old","22"}table.remove(sum,1)for k,v in pairs(sum) doprint(v)end--old--22
排序
table.sort (table [, comp]) 对给定的table进行升序排序。sum={5,8,9}table.sort(sum)for k,v in pairs(sum) doprint(v)end589
注意
我们获取 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
转载地址:http://nnrxo.baihongyu.com/