博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11迭代器和表
阅读量:6677 次
发布时间:2019-06-25

本文共 1364 字,大约阅读时间需要 4 分钟。

ipairs 按照索引从1开始遍历数组,递增遍历,遇到nil停止

pairs 迭代table 遍历表中所有的key和value

sum={"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/

你可能感兴趣的文章
MySQL数据库--主主复制+keepalived高可用
查看>>
Linux CentOS 7 Shell基础(命令历史,管道,作业控制,变量及环境变量)
查看>>
linux学习笔记(一)
查看>>
IOS 自定义圆形进度条UISlider
查看>>
【Spring Boot】13.整合druid
查看>>
Java并发和并行的区别
查看>>
extjs down 的用法
查看>>
IDEA快捷键介绍使用
查看>>
layabox基础:hello world
查看>>
ClassUtil
查看>>
Elastic-Job定时任务
查看>>
真实分享记录我学习Linux系统遇到的问题
查看>>
Linux下查找占用内存最多的进程
查看>>
mongodb 配置文件
查看>>
查看 docker 容器使用的资源
查看>>
Jedis的配置和优化
查看>>
layui + 阿里巴巴iconfont图标库导入
查看>>
2017总结一
查看>>
Spring boot 入门--1
查看>>
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
查看>>