例如:
items = {
[753] = {
},
[192] = {
},
[789] = {
},
[791] = {
},
[790] = {
},
[776] = {
},
}
我想删除 789 和其中的所有数据。我都试过了: table.remove( items, 2 ); 和 table.remove(items, 789); (我不确定索引是如何工作的)没有运气。
这很容易
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
另请参阅Lua 中的编程,第 2.5 节。(即使在线版本是为 Lua 5.0 编写的,这仍然适用于 Lua 5.1)
...您可以将 nil 分配给表字段以将其删除。
当您分配nil
给索引时,这不会显式删除以前存储在该索引中的内容;但它确实降低了存储在那里的引用计数,可能使其有资格进行垃圾收集。