У меня есть сценарий 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, это делается в моде ComputerCraft для Minecraft.