Учебник Lua с нуля для начинающих
Lua — маленький, быстрый и удивительно мощный язык, который вы встречаете чаще, чем думаете: на нём пишут скрипты в Roblox, делают игры на движке Love2D, настраивают веб-сервер nginx и базу данных Redis. Этот курс ведёт от самых основ — что такое переменные и как запустить первую программу — до продвинутых тем: таблиц, метатаблиц, замыканий и корутин. Каждый урок объясняет не только «как», но и «зачем», с практическими примерами. К концу вы сможете читать и писать настоящие Lua-скрипты для игр и конфигов.
Курс «Lua с нуля» состоит из 6 разделов и 19 уроков: Знакомство с Lua, Переменные и типы данных, Таблицы — сердце Lua, Условия и циклы, Функции и Продвинутая Lua. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Знакомство с Lua
- Что такое Lua и где она применяется
Lua — лёгкий встраиваемый язык скриптов. Где он используется: Roblox, Love2D, nginx, Redis, World of Warcraft.
- Как запустить код на Lua
Способы запустить Lua: интерпретатор lua, онлайн-песочницы, среда Roblox Studio. Структура первой программы.
- Вывод данных и функция print
Как выводить данные в Lua: функция print, несколько аргументов, конкатенация строк, отладочный вывод в играх.
- Что такое Lua и где она применяется
2 Переменные и типы данных
- Переменные: local и global
Переменные в Lua: объявление через local, разница между локальными и глобальными переменными, почему всегда нужен local.
- Типы nil, boolean и number
Базовые типы Lua: nil (отсутствие значения), boolean (true/false), number (числа). Функция type и истинность значений.
- Строки и операции над ними
Строки в Lua: кавычки, длинные строки, длина через #, библиотека string — sub, upper, find, gsub.
- Переменные: local и global
3 Таблицы — сердце Lua
- Таблицы как массивы
Таблицы Lua в роли массивов: создание списка, индексы с единицы, добавление элементов через table.insert, длина через #.
- Таблицы как словари
Таблицы Lua как словари: пары ключ-значение, доступ через точку и скобки, перебор через pairs, проверка наличия ключа.
- Вложенные таблицы
Вложенные таблицы в Lua: таблицы внутри таблиц, списки объектов, обход вложенных структур, представление данных игры.
- Таблицы как массивы
4 Условия и циклы
- Условия: if, elseif, else
Условные операторы Lua: if, elseif, else, логические операторы and/or/not, операторы сравнения, отличие ~= от !=.
- Циклы while и repeat
Циклы с условием в Lua: while проверяет условие до тела, repeat-until — после. Управление через break.
- Циклы for: numeric и generic
Два цикла for в Lua: numeric for со счётчиком и шагом, generic for с ipairs и pairs для перебора таблиц.
- Условия: if, elseif, else
5 Функции
- Объявление функций и аргументы
Функции в Lua: объявление через function, параметры и аргументы, значения по умолчанию, функции как значения.
- Множественные возвраты и varargs
Уникальные возможности функций Lua: возврат нескольких значений, приём переменного числа аргументов через ... (varargs).
- Замыкания и область видимости
Замыкания в Lua: вложенные функции, захват внешних переменных (upvalue), область видимости, счётчики и фабрики функций.
- Объявление функций и аргументы
6 Продвинутая Lua
- Метатаблицы и __index: ООП на Lua
Метатаблицы Lua и метаметод __index: как сделать ООП с классами, методами и наследованием на единственной структуре — таблице.
- Модули и require
Модули в Lua: как разбить код на файлы, вернуть таблицу из модуля, подключить через require, кэширование модулей.
- Обработка ошибок: pcall и error
Обработка ошибок в Lua: функция error для генерации ошибки, pcall для безопасного вызова, перехват и сообщения об ошибках.
- Корутины
Корутины в Lua: кооперативная многозадачность, create, resume, yield, status. Пошаговое выполнение и генераторы.
- Метатаблицы и __index: ООП на Lua