删除 table 后如何将所有 table 向下移动?
How can I shift all of the tables down after removing a table?
在此代码中:
t = {
num = '',
}
t[0].num = '0'
t[1].num = '1'
t[2].num = '2'
有没有办法让我删除 t[0]
,然后将 table 的所有值都向下移动,这样后记看起来像这样:
t[0].num = '1'
t[1].num = '2'
虚函数示例:
t = {
num = '',
}
t[0].num = '0'
t[1].num = '1'
t[2].num = '2'
for i=0,tableLength(t) do
print(t[i])
end
--Output: 012
remove(t[0])
for i=0,tableLength(t) do
print(t[i])
end
--Output: 12
如this answer, by creating a new table using the result of table.unpack所述:
t = {table.unpack(t, 1, #t)}
t = {
num = '',
}
t[0].num = '0'
t[1].num = '1'
t[2].num = '2'
此代码将导致索引错误 t[0]
,一个 nil 值。
t
只有一个字段,即t.num
你需要做这样的事情:
t = {}
for i = 0, 2 do
t[i] = {num = tostring(i)}
end
如果您想创建所需的演示 table。
由于 Lua 中有许多有用的函数假设您使用基于 1 的索引,因此我建议您从索引 1 开始。
local t = {1,2,3,4,5}
选项 1:
table.remove(t, 1)
选项 2:
t = {table.unpack(t, 2, #t)}
选项 3:
t = table.move(t, 2, #t, 1, t)
t[#t] = nil
选项 4:
for i = 1, #t-1 do
t[i] = t[i+1]
end
t[#t] = nil
还有更多选择。我不会一一列举。有些是原地做的,有些会产生新的 table 个对象。
在此代码中:
t = {
num = '',
}
t[0].num = '0'
t[1].num = '1'
t[2].num = '2'
有没有办法让我删除 t[0]
,然后将 table 的所有值都向下移动,这样后记看起来像这样:
t[0].num = '1'
t[1].num = '2'
虚函数示例:
t = {
num = '',
}
t[0].num = '0'
t[1].num = '1'
t[2].num = '2'
for i=0,tableLength(t) do
print(t[i])
end
--Output: 012
remove(t[0])
for i=0,tableLength(t) do
print(t[i])
end
--Output: 12
如this answer, by creating a new table using the result of table.unpack所述:
t = {table.unpack(t, 1, #t)}
t = {
num = '',
}
t[0].num = '0'
t[1].num = '1'
t[2].num = '2'
此代码将导致索引错误 t[0]
,一个 nil 值。
t
只有一个字段,即t.num
你需要做这样的事情:
t = {}
for i = 0, 2 do
t[i] = {num = tostring(i)}
end
如果您想创建所需的演示 table。
由于 Lua 中有许多有用的函数假设您使用基于 1 的索引,因此我建议您从索引 1 开始。
local t = {1,2,3,4,5}
选项 1:
table.remove(t, 1)
选项 2:
t = {table.unpack(t, 2, #t)}
选项 3:
t = table.move(t, 2, #t, 1, t)
t[#t] = nil
选项 4:
for i = 1, #t-1 do
t[i] = t[i+1]
end
t[#t] = nil
还有更多选择。我不会一一列举。有些是原地做的,有些会产生新的 table 个对象。