当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift ExpressibleByStringInterpolation用法及代码示例


协议

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 向现有类型添加新的插值行为,该类型为 StringSubstring 等类型实现插值,以添加具有新行为的 appendInterpolation(_:) 重载。

有关详细信息,请参阅 DefaultStringInterpolationStringInterpolationProtocol 文档。

创建支持默认字符串插值的类型

要创建一个支持字符串文字和插值但不需要任何自定义行为的新类型,请将类型符合 ExpressibleByStringInterpolation 并实现 ExpressibleByStringLiteral 协议声明的 init(stringLiteral: String) 初始化程序。 Swift 会自动使用 DefaultStringInterpolation 作为插值类型,并为 init(stringInterpolation:) 提供一个实现,将插值后的文字内容传递给 init(stringLiteral:) ,因此您不需要实现任何特定于该协议的内容。

创建支持自定义字符串插值的类型

如果您想要一个一致的类型来区分字面量和插值段,限制可以插值的类型,支持与 String 上的插值器不同的插值器,或者避免构造包含数据的 String,该类型必须指定一个自定义StringInterpolation 关联类型。此类型必须符合 StringInterpolationProtocol 并具有匹配的 StringLiteralType

有关详细信息,请参阅 StringInterpolationProtocol 文档。

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 ExpressibleByStringInterpolation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。