【lua】table表

–table :lua里面唯一的数据结构 list+哈希 {}
–table默认的索引是从1开始
–lua的table是不会固定大小,有新数据添加的时候会自动扩容,没有初始化的table都是nil
–任意类型的值来做为数组的索引,但是这个值不能是nil

–当我们给table a设置元素的时候并且将a赋值给b,则a和b都指向同一个内存,但是如果把a设置为nil,b同样能访问到table中的元素,如果没有指定的变量指向a,lua的垃圾回收机制会清理相对应的内存

gc:三色标记算法
–每个对象都有三个状态:无法被访问的对象是白色的,可以
–访问到但是没有被完全扫描到的对象是灰色的,完全扫描过
–的对象是黑色的
标记清除法
–标记阶段:把根节点的集合(由lua语言可以直接访问的对象组成)
–标记为活跃状态,在lua语言中,这个集合值包括注册表,保存在
–一个活跃对象中的对象是程序可达的,因此也会被标记为活跃
–(弱引用表中的内容除外)当所有可达对象都被标记为活跃后
–标记阶段结束
–清理阶段:首先,lua语言会遍历所有的被标记为需要进行
–析构,但是又没有被标记为活跃状态的对象。这些没有被标记
–为活跃状态的对象会被标记为活跃(复苏),并且被放在一个单独
–的列表中,这个列表会在析构阶段用到,然后,lua语言遍历
–弱引用表并从中移除键或值未被标记的元素
–清除阶段:遍历所有的对象(lua会把所有创建的对象放在一个
–链表中),如果一个对象没有被标记为活跃状态,就将其回收,
–否则,就清理标记,然后准备进入下一个清理周期
–析构阶段:调用清理阶段被分离出来的对象的析构器

table.concat(table,start,end):连接表里面的元素
fruit={“banana”,“orange”,“apple”}
–返回table连接后的字符串
print(“连接后的字符串”,table.concat(fruit))
–指定的连接字符
print(“连接后的字符串”,table.concat(fruit,","))
–指定索引来连接表
print(“连接后的字符串”,table.concat(fruit,",",2,3))

table.insert(table,[pos],value)
–1.指定位置:指定位置插入,后面元素往后移
–2.未指定位置:尾部插入
–table.remove(table,[pos])
–1.指定位置:指定位置删除,其后的元素往前移
–2.未指定位置:删除最后一个元素

–排序
table.sort():升序排序

–计算表的长度,#和table.getn(),遇到索引中断就停止计数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值