Пользовательская интерполяция строк
Расширяйте интерполяцию собственными сегментами.
«Пользовательская интерполяция строк» — бесплатный урок Swift Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Пользовательская String Interpolation
Swift позволяет расширить работу интерполяции, добавляя методы в String.StringInterpolation. Это настраивает обработку аргументов определённых типов или с определёнными метками.
extension String.StringInterpolation {
mutating func appendInterpolation(shout value: String) {
appendLiteral(value.uppercased() + "!")
}
}
print("Message: \(shout: "hello")")Метод appendInterpolation
Каждая пользовательская интерполяция представляет собой mutating func appendInterpolation(...). Её параметры определяют, что Вы записываете между скобками в строке.
extension String.StringInterpolation {
mutating func appendInterpolation(repeat text: String, times: Int) {
appendLiteral(String(repeating: text, count: times))
}
}
print("\(repeat: "ab", times: 3)")appendLiteral и appendInterpolation
Внутри пользовательского метода вывод создаётся вызовом appendLiteral для обычного текста и повторным использованием существующих интерполяций для значений.
extension String.StringInterpolation {
mutating func appendInterpolation(twice value: Int) {
appendLiteral("\(value)\(value)")
}
}
print("\(twice: 7)")Аргументы интерполяции с метками
Метка первого параметра становится ключевым словом, которое Вы используете, например \(shout: ...). Это делает намерение понятным в месте вызова.
extension String.StringInterpolation {
mutating func appendInterpolation(currency amount: Double) {
appendLiteral(String(format: "$%.2f", amount))
}
}
print("Price: \(currency: 9.5)")Несколько параметров
Пользовательские интерполяции могут принимать несколько параметров, позволяя передавать настройки вместе со значением.
extension String.StringInterpolation {
mutating func appendInterpolation(_ value: Double, places: Int) {
appendLiteral(String(format: "%.\(places)f", value))
}
}
print("\(3.14159, places: 2)")Форматирование значений
Один из распространённых вариантов применения — представить значение особым для предметной области способом, например дополнить число до фиксированной ширины.
extension String.StringInterpolation {
mutating func appendInterpolation(padded value: Int, width: Int) {
appendLiteral(String(format: "%0\(width)d", value))
}
}
print("ID: \(padded: 42, width: 5)")Условный вывод
Пользовательская интерполяция может содержать логику и формировать разный текст в зависимости от входного значения.
extension String.StringInterpolation {
mutating func appendInterpolation(yesNo flag: Bool) {
appendLiteral(flag ? "Yes" : "No")
}
}
print("Active: \(yesNo: true)")Повторное использование существующих интерполяций
Внутри метода можно вызывать appendInterpolation для встроенных типов, надстраивая собственное поведение над стандартным.
extension String.StringInterpolation {
mutating func appendInterpolation(bracketed value: Int) {
appendLiteral("[")
appendInterpolation(value)
appendLiteral("]")
}
}
print("\(bracketed: 9)")Значения параметров по умолчанию
Для параметров пользовательских интерполяций можно задать значения по умолчанию, чтобы вызывающий код мог их не указывать.
extension String.StringInterpolation {
mutating func appendInterpolation(money value: Double, symbol: String = "$") {
appendLiteral(symbol + String(format: "%.2f", value))
}
}
let sym = "EUR "
print("\(money: 5.0)")
print("\(money: 5.0, symbol: sym))")Когда использовать пользовательскую интерполяцию
Используйте пользовательскую интерполяцию, когда один и тот же шаблон форматирования повторяется в коде: она централизует логику за аккуратным местом вызова.
extension String.StringInterpolation {
mutating func appendInterpolation(stars n: Int) {
appendLiteral(String(repeating: "*", count: n))
}
}
print("Rating: \(stars: 4)")Итоги пользовательской интерполяции
Расширяя String.StringInterpolation, Вы превращаете повторяющееся форматирование в читаемый и повторно используемый синтаксис, встроенный прямо в строки.
extension String.StringInterpolation {
mutating func appendInterpolation(percent value: Double) {
appendLiteral(String(format: "%.0f%%", value * 100))
}
}
print("Done: \(percent: 0.75)")Быстрая проверка
Вспомните механизм пользовательской интерполяции.
Повторение: пользовательская String Interpolation
Вы узнали, что расширение String.StringInterpolation методами appendInterpolation позволяет определять новый синтаксис интерполяции, используя appendLiteral и вложенные интерполяции для создания вывода, а метки, несколько параметров и значения по умолчанию помогают получать аккуратное повторно используемое форматирование.
extension String.StringInterpolation {
mutating func appendInterpolation(upper value: String) {
appendLiteral(value.uppercased())
}
}
print("Hello \(upper: "swift")")Часто задаваемые вопросы
Урок «Пользовательская интерполяция строк» бесплатный?
Да — полный текст урока «Пользовательская интерполяция строк» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Пользовательская интерполяция строк»?
Расширяйте интерполяцию собственными сегментами. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Пользовательская интерполяция строк»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы интерполяции строк
- Форматирование чисел в строках
- Многострочные строковые литералы
- Пользовательская интерполяция строк