В Lua используется динамическая типизация переменных. Это значит, что нет смысла явно указывать тип переменных, достаточно присвоить желаемое значение, а уже сам компилятор определит и установит тип переменной. При этом возможна ситуация, когда переменная в разных местах кода меняет свой тип. Впрочем, это не является заботой программиста, что облегчает ему работу.
Имена переменных
В имени переменных допустимо использовать только латинские буквы и символ подчёркивания (_var). Переменные обязательно должны начинаться с латинской буквы или символа подчёркивания и не должны начинаться с цифры.
Правильные переменные
_lyric
dust
o_O
terminator2
Неправильные переменные
123 -- начинается с цифры
креветка -- содержит русские буквы
to-to -- содержит знак -
Типы переменных
В Lua есть несколько типов переменных: nil, логический, число, текст, функция, таблица.
nil
nil — это пустое значение. Любая переменная, которая ещё не получила значение имеет nil.
apple = 5; res = apple + b;
В данном примере будет выведена ошибка, поскольку переменная b явно не определена и по умолчанию равна nil, что и приводит к ошибке при сложении.
Логический
К логическому (булевому) типу относятся значения false (ложь) и true (истина). Значения nil и false считаются ложными, любое другое значение считается истинным.
if (a > 1) then
return true
end
В данном примере будет возвращена истина, если переменная a больше единицы.
Числа
Все числа в Lua являются вещественными (двойной точности с плавающей запятой, если вдаваться в подробности). Впрочем, если вы складываете два целых числа, то и результат увидите в виде целого числа.
res = 10 + 14;
print (res);
В данном случае будет выведено число 24.
Текст
Для обозначения текста применяются двойные или одинарные кавычки, а также их комбинация. Разницы между двойными и одинарными кавычками в большинстве случаев нет, за исключением случая, когда внутри текста встречается кавычка.
song1 = 'Bohemian Rhapsody';
song2 = "We Will Rock You";
song3 = "Don't Try So Hard";
song4 = 'You\'re My Best Friend';
song5 = 'Teo Torriatte ("Let Us Cling Together")';
В данном примере в первых двух переменных применяются разные кавычки и это никак не отражается на их значении. В тексте третьей строки встречается одинарная кавычка, поэтому, чтобы исключить конфликт кавычек, весь текст взят в двойные кавычки. В четвёртой строке текст взят в одинарные кавычки, а внутренний апостроф экранирован с помощью слэша (\'). В пятой строке весь текст взят в одинарные кавычки, поскольку внутри текста встречаются двойные кавычки.
Многострочный текст можно сделать двумя способами.
1. Использовать двойные кавычки, как показано выше и в месте перевода строки вставить \n.
text = "Это\nмногострочный\nтекст;
2. Обозначить многострочный текст двойными квадратными скобками, как показано ниже.
text = [[ Это
многострочный
текст ]]
Функция
Функции применяются для вызова фрагмента кода. Функции могут возвращать одно или несколько значений в зависимости от заданных параметров или вообще без них. В примере ниже функция возвращает ряд чисел в переменную lost.
lost = numbers();
function numbers()
return 4, 8, 15, 16, 23, 42;
end
Таблица
Таблица представляет собой ассоциированный массив с широкими возможностями. В качестве индекса могут применяться не только числа, но и текст, за исключением nil. Ниже в примере показано, как определить таблицу и её значения.
t = {} -- определяем таблицу
t["foo"] = 123 -- значение 123 связано с ключом "foo" в таблице t
t[3] = "bar" -- значение "bar" связано с ключом 3 в таблице t
Ключевые слова
В качестве переменных нельзя использовать следующие зарезервированные ключевые слова:
and break do else elseif
end false for function if
in local nil not or
repeat return then true until while
Глобальные и локальные переменные
Все переменные по умолчанию считаются глобальными, они доступны в любом месте кода. Если требуется локальная переменная, например, только внутри функции, то перед именем переменной добавляется ключевое слово local.
a = 1; -- глобальная переменная
local b = 2; -- локальная переменная