Текст
Тексты в программах называются строками: символы нанизаны друг за другом, как бусины на нитку. Вы уже знаете, что их пишут в двойных кавычках "…" или в одинарных '…'. Текст можно хранить в переменной, как любое другое значение, и склеивать с помощью ..:
local farm = "Подсолнух"
local crop = "тыквы"
local sign = crop .. " с фермы " .. farm
print(sign)
print(farm .. crop)Программа выведет:
тыквы с фермы Подсолнух
Подсолнухтыквы.. не добавляет пробелов. Пишите их в текстах сами, как в " с фермы ". А + тексты не склеивает: "Ферма" + "Подсолнух" заканчивается ошибкой attempt to add a 'string' with a 'string', потому что + складывает только числа.
Текст в двойных кавычках заканчивается на следующей двойной кавычке. Если кавычки нужны внутри текста, есть два способа: взять для текста кавычки другого вида или поставить перед кавычкой обратную косую черту \:
print('Эмма говорит: "Добро пожаловать!"')
print("Эмма говорит: \"Добро пожаловать!\"")
print("Рекс говорит: 'Гав!'")Программа выведет:
Эмма говорит: "Добро пожаловать!"
Эмма говорит: "Добро пожаловать!"
Рекс говорит: 'Гав!'Без обратной косой черты текст заканчивается слишком рано:
print("Эмма говорит: "Добро пожаловать!"")Lua сообщает:
main.lua:1: ')' expected near '<\208>'Текст закончился после Эмма говорит: , а затем Lua встретил слово Добро там, где ждал закрывающую скобку. Русские буквы вне кавычек он не читает и показывает в сообщении только номер байта (\208) вместо слова.
Обратная косая черта и следующий за ней символ образуют экранированную последовательность (escape sequence): два символа в коде, которые обозначают один особый символ в тексте:
\n— новая строка,\t— табуляция,\"и\'— кавычки,\\— одна обратная косая черта.
print("Морковь\nКартофель\tТыквы")Программа выведет:
Морковь
Картофель ТыквыДлину текста даёт # перед ним. Для примеров с длиной возьмём английский текст, почему — объясняется ниже:
local farm = "Sunflower Farm"
print(#farm)
print(#"Rex")
print(#"")Программа выведет:
14
3
0Пробел тоже считается, а "" — это пустой текст, в котором вообще нет символов. Строго говоря, # считает байты — мелкие единицы, в которых компьютер хранит текст. Латинская буква, цифра, пробел или знак препинания занимает один байт, а русская буква, например к в слове «кот», — два, поэтому #"кот" — это 6. Как считать такие буквы, вы узнаете в уроке о строках. А пока длину считайте у английских текстов, как в примерах и в упражнении.
Задание
- 1
Ниже создайте переменную
sign, которая склеивает словоFresh, переменнуюcrop, словоfromи переменнуюfarmчерез пробелы. Затем выведите её. Вывеска английская: русский текст измерить сложнее, это мы разберём позже.Fresh strawberries from Sunflower Farm - 2
Ниже выведите приглашение Эммы в две строки. Используйте один
printс\nдля перехода на новую строку и сохраните кавычки вокруг её слов:Fresh strawberries from Sunflower Farm Эмма говорит: "Попробуйте!" - 3
Наконец, выведите длину вывески. Получите число из переменной
signс помощью#:Fresh strawberries from Sunflower Farm Эмма говорит: "Попробуйте!" Длина вывески: 38 символов.