美文网首页
lua ——table的无言以对

lua ——table的无言以对

作者: 西瓜教主 | 来源:发表于2017-03-28 13:39 被阅读0次

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不是数组,不能简单的当做数组来用

相关文章

  • lua ——table的无言以对

    lua中,万物化table,table生万物,哈哈哈哈,好像很厉害。 问题的由来: 之前想写一个table排序,按...

  • lua部分使用问题及格式化

    1,table index is nil lua 表明table的下标是nil,有问题,需更改下标 2,lua格式...

  • [LuaArray] 严格的 Lua 数组实现

    说点什么 由于 Lua table 的特殊构造,使用纯 Lua 实现 纯数组 是很困难的—— table 是 Ar...

  • Lua 语法入门

    赋值 lua 赋值支持多个值同时赋值 table lua table 的 key 可以是数字也可以是字符串,并且 ...

  • LuaC API

    Lua C APi 总结 Lua_newtable(L) 创建table并放到栈顶 lua_pushstring(...

  • lua和c的初始

    lua和c的交互包括:c访问lua的变量、c访问lua的table、c调用lua的方法、lua调用c的函数 参考链...

  • Lua Table 随机排序

    1、在lua里打乱Table的顺序 for i table.sort(guildStartPoints,funct...

  • Lua table(表)

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数字、字典等。 Lua table 使用...

  • lua table

    table.concat(table, sep, start, end) concat是concatenate(连...

  • 学习常用链接

    //Lua Lua table详解 Lua 元表详解 云风博客 //Unity Unity知识点 栈和队列 Uni...

网友评论

      本文标题:lua ——table的无言以对

      本文链接:https://www.haomeiwen.com/subject/jobonttx.html