当前位置:  开发笔记 > 编程语言 > 正文

在Lua中,如何删除表中的表?

如何解决《在Lua中,如何删除表中的表?》经验,为你挑选了1个好方法。

例如:

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

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



1> Mark Rushako..:

这很简单

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给索引时,不会显式删除先前存储在索引中的内容; 但它确实降低了存储在那里的引用计数,可能使其符合垃圾收集的条件.


如果您之前没有使用过使用重新分配来删除变量的垃圾收集语言,我认为分配"nil"不会是任何人的第一次猜测.无论如何,欢迎你.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有