我有一个Lua脚本,它提供了一个交互式文本菜单,用于在实际工作之前配置脚本。有一个main_menu()
函数,它具有用户可以选择的选项,每个函数都可以调用不同的submenu()
函数。这些不同的submenu()
功能中的每一个功能都是他们的功能,然后他们将返回(他们称之为)main_menu()
功能。最后,每个函数都有一个传递给它的参数settings
,这是一个设置表。引用其他函数的早期函数和后期函数?
事情是这样的:
local function submenu(settings)
-- Get user input & change a settings{} table key accordingly
main_menu(settings)
end
local function main_menu(settings)
-- Present choices & get user input
submenu(settings)
end
local settings={}
settings["foo"] = "bar"
main_menu(settings)
的问题是我得到attempt to call nil
错误时(据我可以告诉)函数调用另一个函数是在脚本定义以后。因此,如果如上例所示,我定义了submenu()
和,然后main_menu()
,main_menu()
没有问题,调用submenu()
,但submenu()
不能调用main_menu()
。
FWIW,这是在Minecraft的ComputerCraft mod中完成的。
可能重复的[Lua的功能范围问题( http://stackoverflow.com/questions/6394721/lua-function-range-problem)和[如何在代码中调用函数(在它被定义之前)?](http://stackoverflow.com/questions/12291203/LUA-如何通话功能从 - 上述它功能于代码之前至它感画质内) – finnw
感谢您的链接;我在发布之前曾在Google上搜索过这个问题,但无法找到任何相关的内容,也没有看到在发布这篇文章时提供的线索建议中的那些线索。穆斯塔一直在使用错误的关键字。 – Sandwich