我有一個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