两个模块需要彼此依赖 - corona

我有两个文件: "play.lua" 和 "menu.lua",而且它们的工作非常完美。在 "menu.lua" 文件中,我用了 local play = require('play')。 我创建了一个按钮,可以将你带回菜单,所以我在 "play.lua" 文件中写了 local menu = require('menu'),但这导致了一个错误。但是如果我在 "play.lua" 文件中只使用 require('menu'),那么一切都正常了。 所以,问题出在哪里?我不能让两个模块相互 require 吗?

点赞
用户1442917
用户1442917

你不能有两个彼此要求的模块;如果尝试这样做,你很可能会得到 loop or previous error loading module 'X' 错误。这种情况与递归函数调用 a 调用 b 调用 a 时产生的情况相同:递归需要一些停止条件,否则它会无限地继续下去。Lua 作者实现了一个检查来检测这种情况并生成你看到的错误。

你需要重组你的代码来避免这种情况。例如,你可以将 play 中的共享代码提取到 core 中,而不是从 menu 中要求 play,而是从两者都要求 core,这将消除这个问题。

2015-04-10 16:06:34