【问题标题】:Lua: table.remove does not work with 2D arrayLua:table.remove 不适用于二维数组
【发布时间】:2023-03-17 16:26:01
【问题描述】:
t = { 
  { 7, "123" }, 
  { 8, "234" }, 
  { 9, "345" }
}

t = table.remove(t, 1) -- This thing brokes everything, but should delete first group

for k, v in ipairs(t) do
  print(k, v[1], v[2])
end

这玩意就是讨厌我,我和它打了4个小时,死路一条也动不了。尝试了几个不同的循环,不同的字母位置(v[1] -> k[1] 等),没有任何帮助。

【问题讨论】:

    标签: arrays loops multidimensional-array lua


    【解决方案1】:

    table.remove 返回删除的元素,而不是更新的表。只是不要分配t = table.remove(t, 1),而是丢弃返回值,即没有任何分配的裸table.remove(t, 1)

    另见the manual

    table.remove (table [, pos])

    从表格中删除位置pos 的元素,如有必要,向下移动其他元素以关闭空间。返回已移除元素的值。 pos 的默认值为n,其中n 是表的长度,因此调用table.remove(t) 会删除表t 的最后一个元素。

    t = { 
      { 7, "123" }, 
      { 8, "234" }, 
      { 9, "345" }
    }
    
    table.remove(t, 1)
    
    for k, v in pairs(t) do
      print(k, v[1], v[2])
    end
    

    【讨论】:

    • 你是救命稻草,伙计。 Omfg,我没想到它会在没有分配的情况下完成。现在一切都像魅力一样,正如它一开始的意图一样。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2021-07-15
    • 2022-06-15
    • 2021-11-21
    • 2021-09-30
    • 2020-10-18
    相关资源
    最近更新 更多