如何使用table.remove(x)向table.insert(x)添加元素

我想通过添加和删除元素来操作lua表。 我会使用table.remove(x)将(x)存储到数组中,然后使用table.insert(x)将其插入回去。

a = {}
table.remove(tab, a) -- 从tab移动到a
...
table.insert(tab, a) -- 从a移动到tab

这不起作用。

点赞
用户4567755
用户4567755

请参考 Lua 参考手册中的 table.inserttable.remove。此处介绍的是 Lua 5.1 版本的,如果您使用不同的版本,应该能够轻松找到适当的版本。

您可以像这样在表格之间移动元素:

a = {}
table.insert(a, table.remove(tab)) -- 从 tab 移动到 a
...
table.insert(tab, table.remove(a)) -- 从 a 移动到 tab

您可能需要验证由 remove 返回的值:

local foo = table.remove(tab)
if type(foo) ~= "nil" then
    table.insert(a, foo)
end

请注意,remove 的默认位置是表格的最后一个元素,而 insert 的默认位置是最后一个元素之后的位置。操纵 insertremovepos 参数可能允许您实现不同的行为。

例如,如果您想获得更多类似滚动的行为(您在以前删除的问题中所询问的):

a = {}
local foo = table.remove(tab, 1)
if type(foo) ~= "nil" then table.insert(a, foo) end -- 从 tab 移动到 a
...
local bar = table.remove(a, 1)
if type(bar) ~= "nil" then table.insert(tab, bar) end -- 从 a 移动到 tab
2019-05-14 07:46:08