lua ——table的无言以对

lua中,万物化table,table生万物,哈哈哈哈,好像很厉害。

问题的由来:

之前想写一个table排序,按顺序处理排序后的table,然后输出结果。然后遇到了一些了不得问题。找了半天原因发现是自己脑子不太好,决定婊一婊自己。

table的存放

table的存放其实和定义有关系

【系统指定key定义】

local tb = {1, 3, ad, 34}

此时,tb中的值的key都是数字,而且是连续的key,遍历table可以发现实际存放是顺次的。就相当于数组了。

【自指定key定义】

------如果我要定义一个table,他的key是不连续的,但是key又是可以按照大小排序的,此时定义table后,它实际存放的结果会不会是按照key的大小依次存放的呢?

------不会,你死了这条心吧


table中,如果key值是不连续的,而且key的利用率不足50%(数量/最大key值),此时,存放是使用的Hash算法。

所以,定义顺序 != 存放的顺序


table 常用function

【table.contact】将table元素连接为字符串

使用很简单的呀:

table.concat( tablename, ", ", start_index, end_index )

然后:

多系哟,所以发现了吗???

当key不是连续的时候,这个蠢笨的table.concat 遇到第一个不连续的key就不继续连接了

笨死了!!!

然后蠢笨的我:

table为嵌套的时候,将table中的所有元素连接起来,用到了书上说的递归:

【table.sort】

table.sort( tablename, sortfunction )

sortfunction是第二排序算法,不填写时,默认的是对tablename内的元素进行升序排序。

终于写到我要婊自己的地方了,我定义了一个key不连续的table,然后想对table内的元素进行排序,结果:

不说了,说多了都是泪。。

在对table进行排序时,需要对table进行预处理。如果是要排序table的key,就要把table的key取出来,存放到新table中,对新table进行排序。

总之,table不是数组,不能简单的当做数组来用


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,602评论 18 399
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,784评论 0 16
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,442评论 0 3
  • 当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形...
    Lee坚武阅读 7,404评论 0 51
  • 对酒当歌 人生几何 众人皆醉 且自独酌
    春衫凉阅读 2,755评论 22 21

友情链接更多精彩内容