Глобальные переменные
Вы также можете создать глобальную переменную:
global { -- определение глобальных переменных
global_var = 1; -- число
some_number = 1.2; -- число
some_string = 'строка';
know_truth = false; -- булево значение
array = {1, 2, 3, 4}; -- массив
}Ещё одна форма записи, удобная для одиночных определений:
global 'global_var' (1)Глобальные переменные всегда попадают в файл-сохранение.
Кроме глобальных переменных, вы можете задавать константы. Синтаксис аналогичен глобальным переменным:
const {
A = 1;
B = 2;
}
const 'Aflag' (false)Движок будет контролировать неизменность констант. Константы не попадают в файл-сохранение.
Иногда вам нужно работать с переменной, которая не определена как local (и видима во всех ваших lua файлах игры), но не должна попадать в файл сохранения. Для таких переменных вы можете использовать декларации:
declare {
A = 1;
B = 2;
}
declare 'Z' (false)Декларации не попадают в файл сохранения. Одно из важных свойств деклараций состоит в том, что вы можете декларировать функции, например:
declare 'test' (function()
p "Hello world!"
end)
global 'f' (test)В таком случае, вы можете присваивать значение функции 'test' другим переменным и состояние этих переменных может быть сохранено в файле сохранения. То-есть, декларированную функцию можно использовать как значение переменной!
Вы можете декларировать ранее определённые функции, например:
declare 'dprint' (dprint)Тем самым делая такие недекларированные функции -- декларированными.
Декларация функции, по сути, это присвоение функции имени, благодаря чему мы можем сохранить эту функцию как ссылку.