lua,迭代和调用 3 个表层中相同命名函数

假设我有多个表格在 {game} 中,如 {bullets},其中 {bullets} 包含多个表格,如下所示。 如何迭代并调用 {game} 中包含的所有 update 函数?

--下面是一个简化的例子,假设 {bullets} 中的每个表格都有多个条目而不仅仅是 update。 而且最终代码必须适用于 game={bullets,coins,whatever} 这样的情况,每个条目都类似于 bullets。

game={}

game.bullets={{update=function(self) end,...}, {update=function(self) end,...},...}

for obj in all(game) do
  for things in all(obj) do
    things:update() end end

-- 我不确定自己做错了什么,也不确定是否需要双重 for 循环。

-- 如果 bullets 没有嵌入到 {game} 中,它将是:

for obj in all(bullets) do
obj:update()
end

我也试过:

for obj in all(game.bullets) do
    obj:update()
    end

*修正:这个可以,我想要解决的问题是使这个方法能够在 {game} 中有多个类似于 {bullets} 的表时工作。 因此,第一个尝试双重迭代失败了。 因此,我不想为每个 {game} 中的项目重复上面的操作,而是想要输入单个语句。

点赞
用户3342050
用户3342050

all() 在 Lua 中不是标准函数。这是你在某个地方找到的辅助函数吗?

很难确定,需要看更多的例子或文档来展示它如何使用,以及期望的返回值。似乎是一个迭代器,类似于 pairs()。可能类似以下代码:

for key, value in pairs( game ) do
    for obj in all( value ) do
        obj :update()
    end
end
2021-05-27 04:39:09