例如:
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的Progamming,第2.5节.(即使在线版本是为Lua 5.0编写的,这仍然适用于Lua 5.1)
...您可以将nil分配给表字段以将其删除.
分配nil
给索引时,不会显式删除先前存储在索引中的内容; 但它确实降低了存储在那里的引用计数,可能使其符合垃圾收集的条件.