例如:

items = {
    [753] = {
    },
    [192] = {
    },
    [789] = {
    },
    [791] = {
    },
    [790] = {
    },
    [776] = {
    },
}

我想去掉它内部789个所有数据。我都尝试: table.remove(项,2);和table.remove(项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到索引,一点不的明确的删除的内容以前存储在索引;但它确实降低了什么被存储在那里,潜在地使得它符合垃圾收集的引用计数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top