Склеивание строк

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 управляет строками в хеш-таблице для оптимизации использования памяти, так что идентичные строки используют одно и то же хранилище. Но конкатенация нарушает это совместное использование из-за создания новых строк.

См. также