Joh*_*ell 29 lua concatenation lua-table
原始邮政
鉴于Lua中没有内置函数,我正在寻找一个允许我将表附加在一起的函数.我搜索了很多,并尝试了我偶然发现的所有解决方案,但似乎都没有正常工作.
场景是这样的:我在应用程序中使用Lua.应用程序的内部命令以表格的形式返回值列表.
我想要做的是在循环中递归调用该命令,并将返回的值再次以表格的形式附加到以前迭代的表中.
编辑
对于那些将来遇到这篇文章的人,请注意@gimf发布的内容.由于Lua中的Tables与其他任何内容一样(即使在列表上下文中),因此没有真正正确的方法将一个表附加到另一个表.最接近的概念是合并表格.请查看帖子" Lua - 合并表? "以获得这方面的帮助.
Wee*_*ine 27
过于复杂的答案很多?
这是我的实施:
function TableConcat(t1,t2)
for i=1,#t2 do
t1[#t1+1] = t2[i]
end
return t1
end
Run Code Online (Sandbox Code Playgroud)
Nas*_*nov 11
还有一种方法:
for _,v in ipairs(t2) do
table.insert(t1, v)
end
Run Code Online (Sandbox Code Playgroud)
在我看来,它是最易读的——它遍历第二个表并将其值附加到第一个表,即故事的结尾。好奇它在速度上如何与上面的显式索引 [] 相比
如果要将现有表连接到新表,这是最简洁的方法:
local t = {3, 4, 5}
local concatenation = {1, 2, table.unpack(t)}
Run Code Online (Sandbox Code Playgroud)
虽然我不确定这在性能方面有多好。
一个简单的方法来做你想做的事:
local t1 = {1, 2, 3, 4, 5}
local t2 = {6, 7, 8, 9, 10}
local t3 = {unpack(t1)}
for I = 1,#t2 do
t3[#t1+I] = t2[I]
end
Run Code Online (Sandbox Code Playgroud)
小智 5
要一起添加两个表,请执行此操作
ii=0
for i=#firsttable, #secondtable+#firsttable do
ii=ii+1
firsttable[i]=secondtable[ii]
end
Run Code Online (Sandbox Code Playgroud)
使用第一个表作为要添加的变量,因为代码按顺序将第二个表添加到第一个表的末尾.
i 是表或列表的起始编号.#secondtable+#firsttable 是什么结束.它从您要添加到的第一个表的末尾开始,并在for循环中结束于第二个表的末尾,因此它适用于任何大小的表或列表.
如果您想合并两个表,但需要结果表的深层复制,无论出于何种原因,请使用来自另一个有关合并表的SO问题的合并以及来自lua-users的一些深层复制代码。
(编辑 好吧,也许你可以编辑你的问题以提供一个最小的例子......如果你的意思是一个表
{ a = 1, b = 2 }
Run Code Online (Sandbox Code Playgroud)
与另一个表连接
{ a = 5, b = 10 }
Run Code Online (Sandbox Code Playgroud)
应该导致
{ a = 1, b = 2, a = 5, b = 10 }
Run Code Online (Sandbox Code Playgroud)
那你就不走运了。 钥匙是独一无二的。
看来你想要一个成对的列表,比如{ { a, 1 }, { b, 2 }, { a, 5 }, { b, 10 } }. 您还可以使用最终结构,例如{ a = { 1, 5 }, b = { 2, 10 } },具体取决于您的应用程序。
但是“连接”表的简单概念对于 Lua 表来说没有意义。 )
| 归档时间: |
|
| 查看次数: |
48647 次 |
| 最近记录: |