【问题标题】:Concatenate table sequences in lua [duplicate]在lua中连接表序列[重复]
【发布时间】:2016-04-27 12:53:55
【问题描述】:

有没有一种简单的方法来连接两个序列表?例如

a = {1, 2, 3}
b = {5, 6, 7}
c = cat(a,b)

c 是表{1,2,3,5,6,7} 的位置?

【问题讨论】:

  • 试试看thisthis
  • 措辞出色且准确的问题。不幸的是,它是质量较差的问题的重复。

标签: lua


【解决方案1】:
function cat(t, ...)  
    local new = {unpack(t)}  
    for i,v in ipairs({...}) do  
        for ii,vv in ipairs(v) do  
            new[#new+1] = vv  
        end  
    end  
    return new  
end

它使用迭代将每个数组的元素添加到一个新数组中。

还值得注意的是,由于元组在 Lua 中的工作方式,{unpack(t)} 仅在元素数量少于特定数量时才有效。这因版本而异,具体取决于您正在执行的操作,但如果它很小,您可能无需担心。

【讨论】:

  • 您在第一行缺少一个空格,这就是代码块不起作用的原因;)请记住:四个空格构成一个代码:)
  • 请注意,{unpack(t)} 最多仅适用于大约一百万个表格元素(如果您有 16 位 ints,则为 15000 个)。
  • @siffie 最后我检查它是 8K...
  • @Henrik 不敢相信我错过了。谢谢:D
  • @warspyking Lua 5.1 大约 8K。在我的测试用例中,Lua 5.2 和 5.3 都可以处理 999970 个元素(取决于您已经使用了多少堆栈空间)。
猜你喜欢
  • 2010-11-27
  • 2012-09-29
  • 2017-08-02
  • 1970-01-01
  • 2019-05-25
  • 2013-06-13
  • 1970-01-01
  • 2019-04-05
  • 2021-04-13
相关资源
最近更新 更多