Обновления строковой интерполяции
Swift 4.2 реализует интерполяцию строк с помощью интерполяции сегментов:
let language = "Swift"
let languageSegment = String(stringInterpolationSegment: language)
let space = " "
let spaceSegment = String(stringInterpolationSegment: space)
let version = 4.2
let versionSegment = String(stringInterpolationSegment: version)
let string = String(stringInterpolation: languageSegment, spaceSegment, versionSegment)
В этом коде компилятор сначала оборачивает каждый буквенный сегмент, а затем интерполирует один с init(stringInterpolationSegment:) .Затем он объединяет все сегменты вместе с init (stringInterpolation:)
Swift 5 использует совершенно другой подход
// 1
var interpolation = DefaultStringInterpolation(
literalCapacity: 7,
interpolationCount: 1)
// 2
let language = "Swift"
interpolation.appendLiteral(language)
let space = " "
interpolation.appendLiteral(space)
let version = 5
interpolation.appendInterpolation(version)
// 3
let string = String(stringInterpolation: interpolation)
Вот что делает этот код:
Определить DefaultStringInterpolation экземпляр с определенной емкостью и счетчиком интерполяции.Вызовите appendLiteral (:) или appendInterpolation (:) , чтобы добавить литералы и интерполированные значения к интерполяция .Создайте последнюю интерполированную строку, вызвав init (stringInterpolation:)
credit: raywenderlich