Вам нужно определить bar
перед foo
.
local function bar ()
print('inside bar')
end
local function foo ()
print('inside foo')
bar()
end
foo()
В вашем примере, когда вы находитесь внутри функции foo
, то, насколько Lua касается bar
не делает 'пока не существует.Это означает, что по умолчанию используется глобальная переменная со значением nil
, поэтому вы получаете сообщение об ошибке «попытка вызвать глобальный 'bar' (нулевое значение)".
Если вы хотите определить foo
до bar
и сохраните их обе как локальные переменные, вам нужно сначала объявить переменную bar.
local bar
local function foo ()
print('inside foo')
bar()
end
function bar ()
print('inside bar')
end
foo()
В этом примере, если вы хотите доказать себе, что bar
является локальнойпеременная, вы можете добавить следующий код в конце:
if _G.bar ~= nil then
print("bar is a global variable")
else
print("bar is a local variable")
end
Это проверяет, является ли "бар" ключом в _G
, таблице глобальных переменных.