1

例如:

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

我想删除 789 和其中的所有数据。我都试过了: table.remove( items, 2 ); 和 table.remove(items, 789); (我不确定索引是如何工作的)没有运气。

4

1 回答 1

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

另请参阅Lua 中的编程,第 2.5 节。(即使在线版本是为 Lua 5.0 编写的,这仍然适用于 Lua 5.1)

...您可以将 nil 分配给表字段以将其删除。

当您分配nil给索引时,这不会显式删除以前存储在该索引中的内容;但它确实降低了存储在那里的引用计数,可能使其有资格进行垃圾收集。

于 2009-12-01T17:50:15.477 回答