【问题标题】:In Lua, how to find out what key an object is stored in [duplicate]在Lua中,如何找出对象存储在什么键中[重复]
【发布时间】:2012-04-02 23:00:00
【问题描述】:

假设我有。

local RockTable = {}

然后是一个 for 循环,创建 20 个岩石并将它们存储在 RockTable 中。

如何使用table.remove(RockTable, ???) 移除我想要的特定石头。

据我了解,当您从 Lua 中的表中删除一个对象时,其余对象会向前移动以更改索引计数。

希望我解释得足够好。

任何帮助将不胜感激。

【问题讨论】:

    标签: loops indexing lua lua-table


    【解决方案1】:

    每个“rock”都有一个索引,假设您使用table.insertRockTable[#RockTable + 1] 或一些类似的语法将它们放在表格的数组部分。只需将该索引传递给table.remove

    如果您想按名称访问“rocks”,则不要将它们放入表的数组部分。它们的键不应该是整数;它们应该是字符串或其他东西。有名字的东西。要“删除”它们,您只需将该值设置为 nil

    --Setting the value:
    RockTable["NameOfRock"] = rock;
    
    --Removing the value:
    RockTable["NameOfRock"] = nil;
    

    【讨论】:

    • 如果有 3 块岩石,它们的索引是 1,2,3。如果我删除索引 2,rock 3 的索引会变为 2 还是保持在 3?
    • @Rico3D:是的,它改变了。这就是为什么它被称为“表格的数组部分”。数组中没有空元素。如果你想让它不像一个数组,那么你应该把nil 放在那里。但是,您将无法使用长度和其他类似数组的函数。
    • 您将如何print() 找出或找出岩石的索引?例如,如果我在屏幕上生成 20 个随机岩石到数组部分中,像这样RockTable[#RockTable + 1] = rock; 我将如何访问索引?我试过print(rock.index),结果是nil。为我的菜鸟道歉,我一直在疯狂搜索,在找不到解决方案后来到这里。
    • @Rico3D:这不是论坛。这是一个问答网站。您的问题是关于将对象存储在表格中。这个新问题是一个问题。所以你应该使用“”框询问它。
    猜你喜欢
    • 2012-04-03
    • 2022-12-02
    • 2012-08-16
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多