Скажите, а сборщика мусора во встроенном Lua нет? Планируется ли или он не работает?
Первый запуск
Код
--lua
function foo()
local a = 2
end
foo()
log(a) -- Возвращает ошибку: не найдена глобальная переменная
Второй запуск, объявляем глобальную переменную 'а'
Код
--lua
function foo()
local a = 2
end
a=10
foo()
log(a) -- Возвращает 10
Третий запуск, удаляем глобальную переменную 'а'
Код
--lua
function foo()
local a = 2
end
foo()
log(a) -- !!Возвращает 10
По всей видимости, продолжает ссылаться на область в памяти, где храниться значение, поэтому его отображает. Можно принудительно присваивать nil, ненужным переменным, или просто не использовать одинаковые имена переменных. Но можно много ошибок так наплодить, особенно если есть привычка присваивать счетчикам в циклах имена i, j, k
Почему-то не работают переменные Ultima в Lua - глобальная переменная не найдена. Пишу со скобками в конце.