Без лишних отступлений сразу к делу. --======================== §1. Комментарии.
Комментарии в Lua (да и в любом языке программирования в принципе) — это та часть кода, которая не читается языком. Чтобы там ни находилось, язык это не прочтёт. Для него этого в принципе не существует. Обычно применяется для описания скрипта, чтобы другие знали, что он из себя представляет, а также для создания пометок, чтобы можно было быстро найти скрипт среди тысяч строк кода. А также полезен для того, чтобы можно было убрать часть скрипта при этом с возможностью возврата.
--------------------
§1.1. Строчные комментарии.
В Lua выглядят следующим образом: два дефиса, стоящие друг к другу, — «--».
Пример:
Код
-- закомментировано
--------------------
§1.2. Многострочные комментарии.
По названию всё ясно — при помощи них можно комментировать сразу несколько строк. Начало — «--[[», а конец — «]]».
Пример:
Код
--[[закомментировано в несколько строк ]]
Так ведь намного быстрее, не правда ли?
Код
-- это -- займёт -- намного -- больше -- времени
--------------------
§1.3. Комментирование части строки.
Иногда бывает полезно сделать и такое. А сделать это можно при помощи многострочных комментариев.
Пример:
Код
эта часть не закомментируется --[[а эта — закомментируется]] а вот эта уже нет
--======================== §2. Вывод текста в консоль.
Для тестирования эта вещь достаточно полезная. В интерпретаторе это функция print.
Пример:
Код
print("сообщение в консоль");
Достаточно элементарно. --======================== §3. Типы данных в Lua.
Их всего восемь: 1. nil — абсолютное ничего. Означает отсутствие данных. Иногда появление nil может быть чревато ошибками. 2. boolean — логический тип данных. К нему относятся true (истина) и false (ложь). При выполнении логических операций false равнозначен nil. 3. number — и так всё прекрасно понятно. Десятичный разделитель в Lua — точка. В остальном проблем не должно возникнуть. 4. string — строка. Это отдельные параграф. 5. function — функция. Также отдельный параграф. 6. table — таблица. И снова отдельный параграф. 7. userdata — пользовательские данные. 8. thread — поток.
--------------------
§3.1. Определение типов данных.
Принудительно этого делать не надо — Lua сам поймёт, что это за тип данных. Но иногда появляется необходимость понять, какой же тип данных использует та или иная переменная. Для этого придумали функцию type().
Пример:
Код
a = 1; -- присваиваем переменной a тип данных number print(type(a)) -- напечатается «number».
Все возможные строки, которые эта функция возвращает: «nil» (как строка, а не значение nil), «number», «string», «boolean», «table», «function», «thread» и «userdata». --======================== §4. Несколько полезных базовых функций Lua.
dofile() — открывает файл по указанному пути и выполняет его содержимое как Lua задачу. В скобках в кавычках должен быть написан путь до файла, его имя и, конечно же, расширение, потому что расширение файла может быть не *.lua, а любым другим, но при этом внутри него будут коды на Lua. Путь должен должен быть записан в кавычках.
tonumber() — преобразует переменную в число. Не очень понимаю, как это работает. Если параметр уже является числом или строкой, конвертируемой в число, то tonumber() возвращает это число, иначе возвращает nil. Основание может быть любым целым числом в диапазоне от 2 до 36 включительно. Если основание больше 10, то символ «A» (как в верхнем, так и в нижнем регистре) представляет 10, «B» представляет 11 и так далее, символ «Z» представляет 35. При основании 10 (по умолчанию), число может быть представлено в экспоненциальной форме. Для других оснований можно указывать только беззнаковые целые числа.
_VERSION — глобальная переменная (не функция), возвращающая строку с версией интерпретатора.
Пример:
Код
-- при вызове этой переменной на самой последней официальной версии Lua эта перменная возвращает следующее: print(_VERSION); -- Lua 5.3.1
Их здесь всего не четыре, как учили в школе, а шесть: + - * / % (остаток от деления) ^ (возведение в степень)
Примеры:
Код
a = 1 + 2; b = (1 * 3) / 10; c = 2 - 2; d = 10 % 1; e = 5 ^ 5;
Для более корректных вычислений можно применять скобки. --======================== §6. Логические выражения. Предисловие.
Логические выражения выполняют действие (или не одно), если вы полнилось какое-то другое действие (или, опять же, не одно).
--------------------
§6.1. Логические операторы.
Прежде чем переходить к изучению логических выражений (по-простому — условий), надо бегло пройтись по условным операторам. Вот все они:
not (не); and (и); or (или); == (равно); ~= (не равно) вместо привычного многим !=; > (больше); < (меньше); >= (больше или равно); <= (меньше или равно).
--------------------
§6.2. Простейшие условия.
Самое простое условие выглядит так:
Синтаксис:
Код
if ... then ... end
Не стоит ничего объяснять — на примере всё станет понятно:
Пример:
Код
if a then -- если переменная «а» существует a = 1; -- тогда переменная имеет значение 1. end -- конец
Запись «if a then» эквивалентна «if a ~= nil then» (если «а» не равна nil). То есть просто идёт проверка на существование переменной в принципе.
--------------------
§6.3. Условия с «else».
«else» выполняет другое действие, если условие c «if» не выполнилось. Пример:
Код
a = 1; if a == 1 then -- если переменная «а» равна единице print("a is 1"); -- тогда.. else -- если не выполнится print("a is not 1"); -- тогда... end -- конец
Важно знать, что блок «else» всегда один (то есть два и более else не допустимы) и всегда ставится в конце других условий.
--------------------
§6.4. Условия с «elseif».
Блок «elseif» выполняет ряд других условий (или только одно), если предыдущие (или только одно) не выполнились.
Пример:
Код
if a > 2 then -- если а больше двух a = 3; -- тогда а равна трём elseif a < 2 then -- если же а меньше двух a = 1; -- тогда а равна единице else -- иначе a = nil; -- тогда удалить а end -- конец
Тут можно сразу вставить блок «else». Блоков elseif может быть сколько угодно много. Располагаются они всегда после if и перед else (если он есть).
--------------------
§6.5. Оператор not.
Долго о нём разглагольствовать не надо. Просто отрицание какой-либо операции. Пример:
Код
if not a > 4 then ... end
Хотя в данном примере лучше not a > 4 заменить на a <= 4.
Рассмотрим другой пример:
Код
if not a then ... end
Здесь проверятся несуществование переменной a. В данном случае эта переменная не указана, соответственно, условие выполнится.
--------------------
§6.6. Несколько условий в одном if/elseif.
Для этого есть операторы and и or:
Код
if a and b and c then ... end
Ни a, ни b, ни c не должны быть равны nil в данном примере. Если хоть одна переменная окажется равной nil, условие не выполнится.
Другое дело с or:
Код
if a or b or c then ... end
Условие не выполнится только в том случае, если все три переменные окажутся равны nil. Если хотя бы одна переменная окажется не равной nil, то условие выполнится.
Также бывают случаи, когда необходимо исключить из условия сразу несколько переменных, например a и c. Можно конечно сделать так:
Код
if not a and not b and c then ... end
Но есть более упрощённый вариант — использовать скобки:
Код
if not (a and b) and c then ... end
Так же можно поступить и с or:
Код
if not (a or b) and c then ... end
С подобными вполне конструкциями можно поэкспериментировать.
А с elseif всё абсолютно идентично.
--------------------
§6.7. Функция rawequal.
Дополнительная функция, поверяющая равенство двух переменных. Возвращает тип данных boolean.
Пример:
Код
a = 1; b = 1;
if rawequal(a,b) == true then print(a+b); -- 2 end
Эквивалентно:
Код
a = 1; b = 1;
if a == b then print(a+b); -- 2 end
--======================== §7. Область видимости переменных.
--------------------
§7.1. Глобальные переменные.
Это присваивание переменной какого-либо значения до тех пор, пока ей не присвоится какое-либо другое значение:
Отличаются от глобальных тем, что локальная переменная может принимать любое значение, а для глобального присвоение присваиваемое значение должно при этом существовать как переменная. Также присваивание теряется, дойдя до ближайшего end либо else, либо elseif. Если объявить переменную вне всяких выражений, она останется навсегда. Объявляется с помощью оператора local:
Код
local a1 = a; -- переменная а на какое-то время имеет значение a1 local a1,b1,c1 = a,b,c;
Не следует забывать, что перед знаком равно пишется значение, которое присваивается переменной, а после — сама переменная.
К этому оператору ещё вернёмся.
Как уже было сказано выше, локальные переменные объявляются на время скрипта:
Пример:
Код
var = 45; if var then local v = var; print(v); end -- всё, var больше не имеет значения v
Таким образом, одну и ту же переменную можно объявлять много раз в разных скриптах.
По возможности лучше всегда использовать локальные переменные — они помогают избежать хаоса в скриптах, лишних имён и прочего. Да и длинные обращения можно урезать до одной буквы, тогда это сильно сэкономит время.
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Lua. Туториал для начинающих. Часть 1», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Отличная статья для тех кто не хочет копать книги для того чтобы не язык понять, а просто узнать терминологию языка. Мне очень полезна статья. Спасибо!
Бывает, что в начале (или в конце) приводят список литературы. Если есть желание, то добавьте.
А ещё можно было бы оформить в виде методички или книжечки в формате PDF с интерактивным содержанием, чтобы можно было переходить по клику к разделу, который хочется освежить в памяти.