Lua:
Склеивание строк
Как выполнить:
В Lua строки конкатенируются с помощью оператора ... Посмотрим его в действии:
local hello = "Привет, "
local world = "мир!"
local greeting = hello .. world
print(greeting) -- Вывод: Привет, мир!Можно даже добавлять числа с небольшим преобразованием:
local base = "У меня есть "
local itemCount = 3
local message = base .. itemCount .. " яблока"
print(message) -- Вывод: У меня есть 3 яблокаПомните, преобразование нестроковых типов выполняется вручную:
local score = 9001
local displayScore = "Ваш счет: " .. tostring(score)
print(displayScore) -- Вывод: Ваш счет: 9001Глубокое Погружение
Конкатенация строк может показаться обыденной, но она очень важна. В начале развития Lua она предназначалась для встраиваемых систем, что требовало минимализма. Вот почему для строк был выбран оператор .. - он прост, но эффективен.
Альтернативы оператору .. включают:
- Функцию
table.concatдля массивов строк, более эффективную для конкатенации множества строк. - Функции библиотеки строк, такие как
string.format, предлагающие более полный контроль над форматированием.
Производительность конкатенации строк в Lua была предметом озабоченности, в особенности с использованием .., поскольку каждое его использование создает новую строку, что может быть ресурсоемким в циклах. Чтобы смягчить это, при конкатенации в цикле используйте таблицы:
local parts = {}
for i = 1, 10 do
parts[i] = "Часть " .. i
end
local combined = table.concat(parts, ", ")
print(combined) -- Вывод: Часть 1, Часть 2, ... Часть 10Внутренне Lua управляет строками в хеш-таблице для оптимизации использования памяти, так что идентичные строки используют одно и то же хранилище. Но конкатенация нарушает это совместное использование из-за создания новых строк.
См. также
- Официальная документация Lua по строкам: https://www.lua.org/manual/5.4/manual.html#6.4
- Программирование на Lua (Книга): https://www.lua.org/pil/contents.html
- Советы по работе со строками: https://lua-users.org/wiki/StringLibraryTutorial