gpt4 book ai didi

lua - 在 Lua 中插入和删除表格元素

转载 作者:行者123 更新时间:2023-12-02 20:21:31 25 4
gpt4 key购买 nike

我不明白为什么下面的代码会产生错误。

代码从底部的 main() 函数开始。

heads = {}
function push(t)
if (#t == 2) then
table.insert(heads, t)
end
end
function remove(id)
for i = 1, #heads do
if (heads[i][2] == id) then
table.remove(heads, i)
end
end
end
function main()
push({50, 1})
push({50, 2})
push({50, 3})
remove(2)
end

当我运行代码时,出现attempt to index a nil value (field '?')错误。

我希望将子表元素插入表中,然后仅删除第二个元素。因此生成的元素可以是 {50, 1}{50, 3}

为什么我的代码不工作以及如何解决这个问题?

最佳答案

安德鲁做对了。迭代表时,切勿尝试删除表内的值。这是许多语言中的常见问题。通常,您会先存储值,然后像这样删除:

local e
for i = 1, #heads do
if (heads[i][2] == id) then
e = i
end
end
if e then table.remove(heads, e) end

但是,这个解决方案很慢。只需使用 ID 作为表的键:

local heads = {}

heads[1] = 50 -- push
heads[2] = 50
heads[3] = 50
heads[2] = nil -- remove

不需要不必要的函数调用和迭代。

关于lua - 在 Lua 中插入和删除表格元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com