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
для чисел з плаваючою точкою дає можливість контролювати кількість знаків після коми.