1. Введение в Lua: установка окружения, переменные, типы данных и управляющие конструкции
Введение в Lua: установка окружения, переменные, типы данных и управляющие конструкции
Добро пожаловать в курс «Профессия: Lua-разработчик». Мы начинаем наше путешествие с фундаментальных основ. Lua (в переводе с португальского — «Луна») — это мощный, эффективный и легковесный скриптовый язык, разработанный в Католическом университете Рио-де-Жанейро.
Почему именно Lua? Этот язык стал стандартом де-факто в игровой индустрии (Roblox, World of Warcraft), используется в сетевом оборудовании (Cisco), веб-серверах (Nginx/OpenResty) и системах умного дома. Его главная особенность — возможность легкого встраивания в программы, написанные на других языках (чаще всего C или C++).
!Визуализация того, как виртуальная машина Lua работает внутри основного приложения-хоста
Установка окружения
Прежде чем писать код, нам нужно подготовить рабочее место. Lua является кроссплатформенным языком, поэтому установка возможна на любую популярную операционную систему.
Windows
Для пользователей Windows самый простой способ — использовать готовые бинарные файлы.
lua-5.4.2_Win64_bin.zip).C:\Lua).macOS
Если у вас установлен пакетный менеджер Homebrew, установка занимает одну строку в терминале:
Linux
В большинстве дистрибутивов Lua уже есть в репозиториях. Для Ubuntu/Debian:
Выбор редактора кода
Для написания кода на Lua подойдет любой текстовый редактор, но я рекомендую использовать специализированные инструменты:
Visual Studio Code: Самый популярный редактор. Рекомендую установить расширение Lua* от sumneko для подсветки синтаксиса и автодополнения. * ZeroBrane Studio: Легковесная IDE, созданная специально для Lua. Отлично подходит для новичков, так как не требует сложной настройки.
Первая программа и комментарии
Традиционно начнем с вывода текста на экран. Создайте файл main.lua и напишите следующую строку:
Запустите файл через терминал командой lua main.lua. Вы увидите заветное приветствие.
Комментарии
Хороший код должен быть документирован. В Lua комментарии бывают двух видов:
--.--[[ ... ]].Переменные и область видимости
Lua — язык с динамической типизацией. Это означает, что вам не нужно указывать тип переменной при её создании; интерпретатор определит его сам на основе присвоенного значения.
Глобальные и локальные переменные
Это одна из самых важных концепций в Lua.
* По умолчанию все переменные являются глобальными. Даже если вы объявите переменную внутри функции, она будет видна во всей программе, если не использовать ключевое слово local.
* Локальные переменные видны только в том блоке кода, где они объявлены.
> Всегда используйте local, если у вас нет веской причины делать переменную глобальной. Это ускоряет работу программы и предотвращает ошибки.
Пример:
Типы данных
В Lua всего 8 базовых типов данных. Функция type() позволяет узнать тип значения.
| Тип | Описание |
| :--- | :--- |
| nil | Означает отсутствие значения. Это не просто ноль или пустая строка, это «ничто». |
| boolean | Логический тип: true (истина) или false (ложь). |
| number | Числовой тип. В современных версиях Lua поддерживает и целые числа, и числа с плавающей точкой. |
| string | Строка текста. Можно использовать одинарные ' или двойные " кавычки. |
| function | Функция в Lua — это значение первого класса (её можно присвоить переменной). |
| userdata | Специальный тип для хранения данных из C (используется при интеграции). |
| thread | Поток выполнения (используется для корутин). |
| table | Таблица. Единственная структура данных в Lua (массивы, словари, объекты — всё это таблицы). |
Особенности типов
nil. Чтобы удалить переменную, просто присвойте ей nil.false и nil считаются ложью. Всё остальное — истина. 0 и пустая строка "" в Lua являются true. Это часто сбивает с толку программистов, пришедших из C++ или JavaScript.Управляющие конструкции
Управляющие конструкции позволяют нашему коду принимать решения и выполнять действия многократно.
Условный оператор if
Синтаксис прост: if (если), then (то), elseif (иначе если), else (иначе), end (конец).
Циклы
В Lua есть три вида циклов.
#### 1. Цикл while
Выполняется, пока условие истинно. Проверка условия происходит перед итерацией.
#### 2. Цикл repeat ... until
Аналог цикла do...while в других языках. Тело цикла выполняется хотя бы один раз, так как проверка условия происходит после итерации. Обратите внимание: цикл работает до тех пор, пока условие не станет истинным (until — пока не).
#### 3. Цикл for
Самый часто используемый цикл. Бывает двух видов: числовой и универсальный (для обхода таблиц). Сегодня рассмотрим числовой.
Синтаксис: for переменная = начало, конец, шаг do ... end.
Если шаг не указан, он по умолчанию равен 1.
Чтобы понять, сколько раз выполнится цикл, можно использовать следующую формулу:
Где — количество итераций, — конечное значение, — начальное значение, а — шаг цикла. Операция означает округление вниз до целого числа.
Например, для цикла for i = 1, 10, 2:
Где — итоговое количество итераций (5 раз), — предел, — старт, — шаг.
Заключение
Мы рассмотрели базовый синтаксис Lua: как создавать переменные, какие бывают типы данных и как управлять потоком выполнения программы. Lua подкупает своей простотой, но за этой простотой скрывается огромная гибкость. В следующей статье мы подробно разберем Таблицы — сердце языка Lua, и узнаем, как с их помощью создавать массивы и словари.