Локальные переменные
Кроме переменных объекта, вы можете использовать локальные и глобальные переменные.
Локальные переменные создаются с помощью служебного слова local:
act = function(s)
local w = _'лампочка'
w.light = true
p [[Я нажал на кнопку, и лампочка загорелась.]]
endВ данном примере, переменная w существует только в теле функции-обработчика act. Мы создали временную ссылку-переменную w, которая ссылается на объект 'лампочка', чтобы изменить свойство-переменную light у этого объекта.
Конечно, мы могли написать и:
_'лампочка'.light = true
Но представьте себе, если нам нужно произвести несколько действий с объектом, в таких случаях проще воспользоваться временной переменной.
Локальные переменные никогда не попадают в файл-сохранение и играют роль временных вспомогательных переменных.
Локальные переменные можно создавать и вне функций, тогда данная переменная видима только в пределах данного lua файла и не попадает в файл сохранения.
Ещё один пример использования локальных переменных:
obj {
nam = 'котёнок';
state = 1;
act = function(s)
s.state = s.state + 1
if s.state > 3 then
s.state = 1
end
p [[Муррр!]]
end;
dsc = function(s)
local dsc = {
"{Котёнок} мурлычет.",
"{Котёнок} играет.",
"{Котёнок} облизывается.",
};
p(dsc[s.state])
end;
endКак видим, в функции dsc мы определили массив dsc. 'local' указывает на то, что он действует в пределах функции dsc. Конечно, данный пример можно было написать и так:
dsc = function(s)
if s.state == 1 then
p "{Котёнок} мурлычет."
elseif s.state == 2 then
p "{Котёнок} играет."
else
p "{Котёнок} облизывается.",
end
end