Склейка текста
Часто нужно вывести в одной строке текст и число, например Монеты: 120. В Lua тексты склеивают двумя точками, ... Программисты называют склейку текстов конкатенацией:
print("Ферма" .. " " .. "Подсолнух")
print("Монеты: " .. 120)Программа выведет:
Ферма Подсолнух
Монеты: 120.. склеивает значения в точности как есть, не добавляя пробелов. Пробелы нужно писать самим, внутри кавычек. Поэтому в "Монеты: " после двоеточия стоит пробел. Без него текст и число слипнутся:
print("Монеты:" .. 120)Программа выведет:
Монеты:120Число, присоединённое к тексту, становится частью текста. Присоединять можно и вычисление. Lua сначала считает, а потом склеивает, поэтому скобки не нужны:
print("Яиц сегодня: " .. 7 + 5)
print("6 морковок стоят " .. 6 * 5 .. " монет.")Программа выведет:
Яиц сегодня: 12
6 морковок стоят 30 монет.Всегда пишите пробелы вокруг ... Рядом с числом они даже обязательны: без них Lua читает 1..2 как странное число и останавливается с ошибкой malformed number near '1..2'. С пробелами print(1 .. 2) выводит 12: два числа, склеенные в текст.
Во многих других языках тексты склеивают с помощью +. В Lua + только складывает числа, поэтому print("Монеты: " + 120) заканчивается ошибкой attempt to add a 'string' with a 'number': Lua не может сложить текст (строку) и число.
print может вывести и несколько значений сразу: перечислите их через запятую. Они выводятся в одной строке, а между ними ставится табуляция — широкий промежуток, который выравнивает значения по столбцам:
print("Морковь", 5, "монет")
print("Тыква", 20, "монет")Программа выведет:
Морковь 5 монет
Тыква 20 монетЗапятые удобны, когда нужно быстро посмотреть несколько значений. Для красивой фразы используйте ..: он позволяет самим решать, где будет каждый пробел. А поскольку запятая разделяет значения, десятичные числа надо писать с точкой: print(2,5) выводит не два с половиной, а два числа, 2 и 5, с табуляцией между ними.
Задание
- 1
Программа в редакторе выводит цены на прилавке Эммы. Запустите её: запятые ставят табуляцию между названием и ценой. Перепишите обе строки с помощью
..и добавьте словомонет, чтобы программа вывела:Морковь: 5 монет Тыква: 20 монет - 2
Дедушка Джо хочет купить 4 тыквы. Добавьте строку, которая выведет их общую стоимость. Пусть Lua посчитает цену как
4 * 20и склеит результат с текстами, чтобы программа вывела:Морковь: 5 монет Тыква: 20 монет 4 тыквы: 80 монет - 3
Ещё дедушка Джо берёт 10 морковок. В последней строке выведите, сколько он платит за всё. Пусть Lua посчитает по ценам: 4 тыквы по 20 монет и 10 морковок по 5 монет. Программа выведет:
Морковь: 5 монет Тыква: 20 монет 4 тыквы: 80 монет Дедушка Джо платит: 130 монет