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