ExpressibleByStringInterpolation
声明
protocol ExpressibleByStringInterpolation : ExpressibleByStringLiteral
概述
使用字符串插值在字符串文字中包含一个或多个表达式,用一组括号括起来并以反斜杠为前缀。例如:
let price = 2
let number = 3
let message = "One cookie: $\(price), \(number) cookies: $\(price * number)."
print(message)
// Prints "One cookie: $2, 3 cookies: $6."
扩展默认插值行为
通过扩展 DefaultStringInterpolation
向现有类型添加新的插值行为,该类型为 String
和 Substring
等类型实现插值,以添加具有新行为的 appendInterpolation(_:)
重载。
有关详细信息,请参阅 DefaultStringInterpolation
和 StringInterpolationProtocol
文档。
创建支持默认字符串插值的类型
要创建一个支持字符串文字和插值但不需要任何自定义行为的新类型,请将类型符合 ExpressibleByStringInterpolation
并实现 ExpressibleByStringLiteral
协议声明的 init(stringLiteral: String)
初始化程序。 Swift 会自动使用 DefaultStringInterpolation
作为插值类型,并为 init(stringInterpolation:)
提供一个实现,将插值后的文字内容传递给 init(stringLiteral:)
,因此您不需要实现任何特定于该协议的内容。
创建支持自定义字符串插值的类型
如果您想要一个一致的类型来区分字面量和插值段,限制可以插值的类型,支持与 String
上的插值器不同的插值器,或者避免构造包含数据的 String
,该类型必须指定一个自定义StringInterpolation
关联类型。此类型必须符合 StringInterpolationProtocol
并具有匹配的 StringLiteralType
。
有关详细信息,请参阅 StringInterpolationProtocol
文档。
可用版本
相关用法
- Swift ExpressibleByStringInterpolation init(stringInterpolation:)用法及代码示例
- Swift ExpressibleByStringLiteral用法及代码示例
- Swift ExpressibleByIntegerLiteral用法及代码示例
- Swift ExpressibleByUnicodeScalarLiteral用法及代码示例
- Swift ExpressibleByFloatLiteral init(floatLiteral:)用法及代码示例
- Swift ExpressibleByIntegerLiteral init(integerLiteral:)用法及代码示例
- Swift ExpressibleByExtendedGraphemeClusterLiteral用法及代码示例
- Swift ExpressibleByFloatLiteral用法及代码示例
- Swift ExpressibleByDictionaryLiteral用法及代码示例
- Swift ExpressibleByBooleanLiteral init(booleanLiteral:)用法及代码示例
- Swift ExpressibleByArrayLiteral用法及代码示例
- Swift ExpressibleByArrayLiteral init(arrayLiteral:)用法及代码示例
- Swift EnumeratedSequence forEach(_:)用法及代码示例
- Swift EnumeratedSequence.Iterator map(_:)用法及代码示例
- Swift EnumeratedSequence.Iterator flatMap(_:)用法及代码示例
- Swift EmptyCollection first(where:)用法及代码示例
- Swift EmptyCollection index(_:offsetBy:limitedBy:)用法及代码示例
- Swift EnumeratedSequence drop(while:)用法及代码示例
- Swift EmptyCollection partition(by:)用法及代码示例
- Swift EnumeratedSequence.Iterator allSatisfy(_:)用法及代码示例
- Swift EmptyCollection prefix(upTo:)用法及代码示例
- Swift EmptyCollection starts(with:)用法及代码示例
- Swift EnumeratedSequence用法及代码示例
- Swift EmptyCollection.Iterator split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift EmptyCollection.Iterator starts(with:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 ExpressibleByStringInterpolation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。