Інтерполяція рядків

Lua:
Інтерполяція рядків

Як це зробити:

Так як чистий Lua (станом на останню версію) не підтримує вбудовану інтерполяцію рядків, ми можемо використовувати вбудовану функцію string.format:

local name = "Іван"
local day = "понеділок"

-- Використовуючи string.format
local greeting = string.format("Привіт, %s! З нетерпінням чекаю зустрічі в %s.", name, day)
print(greeting)  -- Виведення: Привіт, Іван! З нетерпінням чекаю зустрічі в понеділок.
local temperature = 23.5

-- Форматування з плаваючою точкою
local weather = string.format("Сьогодні температура повітря: %.1f градусів за Цельсієм.", temperature)
print(weather)  -- Виведення: Сьогодні температура повітря: 23.5 градусів за Цельсієм.

Поглиблений розгляд

Споконвіку Lua не мав вбудованої підтримки інтерполяції рядків, на відміну від деяких інших мов програмування, як от Ruby або JavaScript. У Lua для роботи зі строками прийнято використовувати функцію string.format, яка схожа на свої аналоги в C і PHP, де використовуються спеціальні символи для форматування, наприклад %s для рядків чи %d для чисел.

Альтернативою для інтерполяції може бути конкатенація за допомогою оператора .., але це може бути менш зручно, коли потрібно вставити багато значень:

local name = "Іван"
local age = 30

-- Конкатенація через ..
local introduction = "Мене звуть " .. name .. " і мені " .. age .. " років."
print(introduction)  -- Виведення: Мене звуть Іван і мені 30 років.

В якості додаткової опції можна писати свою функцію інтерполяції чи використовувати бібліотеки третіх сторін.

Поведінка string.format прямо залежить від переданих типів даних і специфікаторів форматування. Наприклад, використання %f для чисел з плаваючою точкою дає можливість контролювати кількість знаків після коми.

Додаткові ресурси