例如:
items = {
[753] = {
},
[192] = {
},
[789] = {
},
[791] = {
},
[790] = {
},
[776] = {
},
}
我想删除789及其中的所有数据。我试过两个: table.remove(items,2);和table.remove(items,789); (我不确定索引是如何工作的)没有运气。
答案 0 :(得分:7)
就像
一样简单items[789] = nil
在Lua中,如果表中的某个键具有nil
值,那么就好像密钥不存在一样。
> t = { [5] = {}, [10] = {} }
> for k,v in pairs(t) do print(k,v) end
5 table: 0037CBC0
10 table: 0037CBE8
> t[5] = nil
> for k,v in pairs(t) do print(k,v) end
10 table: 0037CBE8
另见Progamming in Lua, section 2.5。 (即使在线版本是为Lua 5.0编写的,这仍然适用于Lua 5.1)
...您可以将nil分配给表字段以将其删除。
当您为索引分配nil
时,显式删除之前存储在该索引中的内容;但它确实降低了存储在那里的引用数量,可能使它有资格进行垃圾收集。