function - lua,迭代和调用n = 3层表的所有同名函数
问题描述
假设我在 {game} 中有多个表格,例如 {bullets},其中 {bullets} 有多个表格,如下所示。我将如何遍历并调用 {game} 中包含的所有更新函数?
--下面是一个简化的例子,假设 {bullets} 中的每个表都有多个条目,而不仅仅是更新。并且最终代码必须在像 game={bullets,coins,whatever} 这样的情况下工作,每个条目都与子弹具有相似的性质。
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 循环。
--如果子弹没有嵌入到 {game} 中,它只是:
for obj in all(bullets) do
obj:update()
end
我也试过:
for obj in all(game.bullets) do
obj:update()
end
*更正:这行得通,但我想解决的问题是如果我在 {game} 中有多个像 {bullets} 这样的表,那么我要解决这个问题。因此,第一次尝试双迭代失败了。因此,与其在 {game} 中有项目一样多次重复上述内容,我想键入一个语句。
解决方案
all()
不是 Lua 中的标准函数。这是您在某处找到的辅助功能吗?
如果没有看到更多示例或说明如何使用它的文档以及预期的返回值,很难说清楚。似乎是一个迭代器,本质上类似于pairs()
. 可能是这样的:
for key, value in pairs( game ) do
for obj in all( value ) do
obj :update()
end
end
推荐阅读
- javascript - 如何使用 JavaScript append 插入带有样式属性的选项值?
- mysql - 有没有办法通过更改连接点来运行带有 MySql 数据库的 DNN 9?
- java - 从我的所有控制器访问一个变量
- c++ - 采用 Eigen::Tensor 的函数 - 模板参数推导失败
- python - Insert SQLalchemy from dictionary
- algorithm - 计算 3D 固定关节约束中两个实体的冲量/扭矩
- linux - 如何使用由无人用户启动的 JProfiler for JVM 远程配置文件?
- node.js - 使用 Bluebird Promise.map 并发参数来加速 CouchDBs 上的查询
- c# - 如何将 SuggestedActions 作为列表而不是轮播
- google-cloud-messaging - 我可以将 FCM 服务器密钥与 GCM 端点一起使用吗?