0Pricing
Swift Academy · Урок

Пользовательская интерполяция строк

Расширяйте интерполяцию собственными сегментами.

«Пользовательская интерполяция строк» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы интерполяции строк
  2. Форматирование чисел в строках
  3. Многострочные строковые литералы
  4. Пользовательская интерполяция строк
← Назад к Swift Academy