字符串插值更新
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:)生成最终的插值字符串
信用:雷文德利希