当前位置:  开发笔记 > 编程语言 > 正文

Lua中表的连接

如何解决《Lua中表的连接》经验,为你挑选了2个好方法。

原始邮政

鉴于Lua中没有内置函数,我正在寻找一个允许我将表附加在一起的函数.我搜索了很多,并尝试了我偶然发现的所有解决方案,但似乎都没有正常工作.

场景是这样的:我在应用程序中使用Lua.应用程序的内部命令以表格的形式返回值列表.

我想要做的是在循环中递归调用该命令,并将返回的值再次以表格的形式附加到以前迭代的表中.


编辑

对于那些将来遇到这篇文章的人,请注意@gimf发布的内容.由于Lua中的Tables与其他任何内容一样(即使在列表上下文中),因此没有真正正确的方法将一个表附加到另一个表.最接近的概念是合并表格.请查看帖子" Lua - 合并表? "以获得这方面的帮助.



1> Weeve Ferrel..:

过于复杂的答案很多?

这是我的实施:

function TableConcat(t1,t2)
    for i=1,#t2 do
        t1[#t1+1] = t2[i]
    end
    return t1
end


据我所知,`ipairs`保证迭代顺序为`for i = 1` ...直到第一个t [i] == nil,no?对于非退化情况,与`i = 1,#t`相同.重新插入`插入`与索引设置,你是对的 - 我测量并且有5-6倍的性能差异
NB:`ipairs`~ =`pair`."i"有一个原因.`pair`是乱的,`ipairs`不是

2> 小智..:

要一起添加两个表,请执行此操作

    ii=0
for i=#firsttable, #secondtable+#firsttable do
    ii=ii+1
    firsttable[i]=secondtable[ii]
end

使用第一个表作为要添加的变量,因为代码按顺序将第二个表添加到第一个表的末尾.

i 是表或列表的起始编号.

#secondtable+#firsttable 是什么结束.

它从您要添加到的第一个表的末尾开始,并在for循环中结束于第二个表的末尾,因此它适用于任何大小的表或列表.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有