Skip to content

Локальные переменные

Кроме переменных объекта, вы можете использовать локальные и глобальные переменные.

Локальные переменные создаются с помощью служебного слова local:

lua
act = function(s)
    local w = _'лампочка'
    w.light = true
    p [[Я нажал на кнопку, и лампочка загорелась.]]
end

В данном примере, переменная w существует только в теле функции-обработчика act. Мы создали временную ссылку-переменную w, которая ссылается на объект 'лампочка', чтобы изменить свойство-переменную light у этого объекта.

Конечно, мы могли написать и:

_'лампочка'.light = true

Но представьте себе, если нам нужно произвести несколько действий с объектом, в таких случаях проще воспользоваться временной переменной.

Локальные переменные никогда не попадают в файл-сохранение и играют роль временных вспомогательных переменных.

Локальные переменные можно создавать и вне функций, тогда данная переменная видима только в пределах данного lua файла и не попадает в файл сохранения.

Ещё один пример использования локальных переменных:

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. Конечно, данный пример можно было написать и так:

lua
dsc = function(s)
    if s.state == 1 then
        p "{Котёнок} мурлычет."
    elseif s.state == 2 then
        p "{Котёнок} играет."
    else
        p "{Котёнок} облизывается.",
    end
end