Lua.Основы.Примеры
Senior Pomidor
В продолжение к предыдущей статье посвещённой основам Lua, добавляю примеры операций над переменными, типов данных, операторов.
Комментарии:
Однострочный комментарий
-- Комментарий
Многострочный комментарий
--[[ Комментариев много не бывает ]]
Типы данных:
nil (неопределенный)
var = nil -- переменная var освободилась
boolean (логический)
boolTrue = true -- переменная имеет значение true (очевидненько =)) boolFalse = false -- переменная имеет значение false (не менее очевидно =))
number (числовой)
number1 = 12412.124 number2 = 7
string (строковый)
text = "Привет!"
function (функция)
function add(a, b)
return a + b
end
userdata (пользовательские данные)
-- [[ по сути, не особо важный тип данных(с точки зрения ЯП Lua), так как используется для хранения данных "чужих" компонентов программ при встраивании ]]
thread (поток)
var = coroutine.create(var) -- теперь переменная var сопрограмма
table (таблица)
sometable = { ["name1"] = значение1; ["name2"] = значение2; ["name3"] = значение3 <...> }
Пример:
a = {} -- пустая таблица
a["hello"] = true -- присвоение значений таблице a
a["world"] = false
a[true] = 1
a = { -- или так
hello = 123,
world = 456
}
Операции над переменными:
Присваивание
<имя переменной> = <значение> -- объявление глобальной переменной local <имя переменной> = <значение> -- объявление локальной переменной
Пример:
x = 10 local y = 20 x, y = y, x -- возможно параллельное присваивание
Арифметические
x + y -- сложение x - y -- вычитание x * y -- умножение x / y -- деление x % 2 -- остаток от деления y ^ 2 -- возведение в степень
Логические
-- Логическое отрицание
print(not true) -- выведет false
print(not false) -- выведет true
-- Логическое И
print(true and true) -- выведет true
print(false and true) -- выведет false
print(true and false) -- выведет false
print(false and false) -- выведет false
-- Логическое ИЛИ
print(true or true) -- выведет true
print(false or true) -- выведет true
print(true or false) -- выведет true
print(false or false) -- выведет false
Сравнение
a = 1 b = 2 print(a == b) -- равенство, выведет false print(a ~= b) -- неравенство, выведет true print(a > b) -- больше, выведет false print(a < b) -- меньше, выведет true print(a >= b) -- больше или равно, выведет false print(a <= b) -- меньше или равно, выведет true
Конкатенация строк
text1 = "Привет," text2 = " мир!" text = text1 .. text2 -- присвоить значение переменной text - 'Привет, мир!'
Длина/размер
local foo = {}
foo[1] = 15
foo[2] = 55
print(#foo) -- выведет размер таблицы
Операторы языка:
Условные операторы
if <условие> then <последовательность команд, которая будет выполнена при выполнении условия> end --------------------------------------------------------------------- if <условие> then <последовательность команд, которая будет выполнена при выполнении условия> else <последовательность команд, которая будет выполнена, если условие не выполнено> end --------------------------------------------------------------------- if <условие 1> then <последовательность команд, которая будет выполнена при выполнении условия 1> elseif <условие 2> then <последовательность команд, которая будет выполнена, если прошлые условия не выполнены, и при выполнении условия 2> ... elseif <условие n> then <последовательность команд, которая будет выполнена, если прошлые условия не выполнены, при выполнении условия n> else <последовательность команд, которая будет выполнена, если ни одно условие не выполнено> end
Пример:
number = InputNumber()
if number > 10 then
message("Число больше 10")
elseif number == 3 then
message("Число равно 3")
else
message("Число меньше 11 и не равно 3")
end
Цикл со счетчиком
for <переменная-счётчик> = <начало цикла>, <конец цикла>, <шаг> do <цепочка действий, повторяемых для всех значений переменной-счётчика из указанного диапазона> end
Пример:
for i = 1, 10, 2 do print(i) -- Выведет все нечётные числа 1, 3, 5, 7, 9 end
Цикл с предусловием
while <условие> do <цепочка действий, которая может быть не выполнена ни разу, выполняется, только если выполнено условие выше> end
Пример:
a = 5 while a > 0 do -- организовали цикл со счетчиком a = a - 1 end
Цикл с постусловием
repeat <цепочка действий, которая будет выполнена хотя бы 1 раз, а если выполнится условие после until, то будет повторено> until <условие продолжения>
Пример:
b = 0
repeat
print("Введите число > 0")
b = input() -- пользователь вводит число
until (b < 1) -- повторяем, если введено не положительное число