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

这似乎是一个非常简单的问题,但是我还没有找到答案。我正在像这样将游戏对象添加到 Lua 表中:

local lock = GameObject {
-- 对象值和方法
table.insert(objects,lock)

但是尽管进行了大量的谷歌搜索和阅读 Lua 文档,我仍然无法弄清楚如何根据它们的名称引用这些对象。我认为这是因为有一种非常特定的语法来实现这一点。如果有人能帮帮我,我会非常感激。谢谢!

点赞
用户6331353
用户6331353

你可能想要像这样做,而不是使用 table.insert。对象仍然将是一个表格。

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

如果你执行以下操作

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

您将得到以下输出

lock2   table: 0x1af3310
lock    table: 0x1af3870

进一步解释

在您的问题中(不是上面的解决方案),lock 仅是它的变量名,它不是索引的名称。

在这个代码片段中,您可以看到插入到 objects 中的元素并不包含在 objects. 中记录的变量名。objects 将一个整数存储为键,然后将插入的表格作为值。

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

在 repl 上测试

2020-07-29 02:21:45