如何通过名称在 Lua 中引用 table 中的对象

How to reference an object in a table in Lua by its name

这似乎是一个非常简单的问题,但我一直无法找到答案。我将游戏对象添加到 Lua 中的 table,如下所示:

local lock = GameObject {
 -- object values and methods
table.insert(objects, lock)

但是,尽管 google 搜索并通读了 Lua 文档,我仍然无法弄清楚如何通过名称引用这些对象。我认为这是因为有一个非常具体的语法可以这样做。如果有人可以帮助我,我将不胜感激。谢谢!

你可能想做这样的事情而不是 table.insert。对象仍将是 table.

objects = {}
objects.lock = {}
objects.lock2 = {}

如果你再执行

for key, value in pairs(objects) do
  print(key,value)
end

你会得到输出

lock2   table: 0x1af3310
lock    table: 0x1af3870

进一步说明

在你的问题中(不是上面的解决方案)锁只是给它的变量名,它不是索引的名称。

在这个代码片段中,可以看到被插入到对象中的项没有记录在 objects. 中的变量名 objects 正在存储一个 int 作为键,然后插入table 作为值。

objects = {}
local lock = {}
local lock2 = {}

 -- object values and methods
table.insert(objects, lock)
table.insert(objects, lock2)

for key, value in pairs(objects) do
  print(key,value)
  print(type(value))
end

打印

1   table: 0x131b590
table
2   table: 0x131b540
table

test it on repl