Вывод данных и функция print
Разбираемся, как программа на Lua общается с нами через вывод.
print — встроенная функция Lua, которая печатает переданные значения в консоль и переходит на новую строку.
Вывод данных — это первое, что нужно освоить: без него вы не увидите, что делает программа. В играх print используют для отладки — чтобы понять, почему персонаж не прыгает или дверь не открылась.
print с несколькими значениями
В print можно передать сколько угодно значений через запятую. Между ними автоматически вставляется табуляция:
print("Игрок:", "Алиса", "Уровень:", 5)Вывод:
Игрок: Алиса Уровень: 5
Склейка строк (конкатенация)
Если нужен красивый вывод без табуляций, склеивайте строки оператором .. (две точки):
local name = "Алиса"
local level = 5
print("Игрок " .. name .. " достиг уровня " .. level)Вывод:
Игрок Алиса достиг уровня 5
Заметьте: Lua сама превратила число 5 в текст при склейке. Это удобно, но работает не всегда — например, со сложными значениями придётся преобразовывать вручную через tostring.
Функция string.format
Для аккуратного вывода чисел и шаблонов удобна string.format — она подставляет значения в шаблон:
local hp = 87.5
print(string.format("Здоровье: %.1f%%", hp))Вывод:
Здоровье: 87.5%
Здесь %.1f означает «дробное число с одним знаком после запятой», а %% — это просто знак процента.
Как работает под капотом
Функция print внутри вызывает tostring для каждого аргумента, склеивает результаты через табуляцию и отправляет в стандартный поток вывода. Поэтому print может напечатать что угодно — число, строку, даже таблицу (правда, для таблицы выведется её адрес в памяти, а не содержимое).
Частые ошибки
- Пытаться склеить строки знаком
+— в Lua это сложение чисел, для склейки нужны... - Забыть, что
printдобавляет перевод строки сам — двойногоprintхватит для двух строк. - Ждать, что
print(myTable)покажет содержимое таблицы. Он покажет лишь её адрес.
Итог
printпечатает значения в консоль, разделяя их табуляцией.- Оператор
..склеивает строки; числа при склейке превращаются в текст автоматически. string.formatдаёт точный контроль над форматом вывода.- В играх
print— главный инструмент отладки.