协议
Text
TextOutputStream
可以作为text-streaming 操作目标的类型。
声明
protocol TextOutputStream
概述
您可以将标准库的 print(_:to:)
和 dump(_:to:)
函数的输出发送到符合 TextOutputStream
协议的类型的实例,而不是标准输出。 Swift 的String
类型已经符合TextOutputStream
,因此您可以在字符串中捕获来自print(_:to:)
和dump(_:to:)
的输出,而不是将其记录到标准输出中。
var s = ""
for n in 1...5 {
print(n, terminator: "", to: &s)
}
// s == "12345"
符合TextOutputStream 协议
要使您的自定义类型符合TextOutputStream
协议,请实现所需的write(_:)
方法。使用TextOutputStream
目标的函数可以在每次写入操作时多次调用write(_:)
。
例如,这是一个输出流的实现,它将任何输入转换为其纯 ASCII 表示,然后将其发送到标准输出。
struct ASCIILogger: TextOutputStream {
mutating func write(_ string: String) {
let ascii = string.unicodeScalars.lazy.map { scalar in
scalar == "\n"
? "\n"
: scalar.escaped(asASCII: true)
}
print(ascii.joined(separator: ""), terminator: "")
}
}
ASCIILogger
类型的 write(_:)
方法通过转义每个 Unicode 标量来处理其字符串输入,但 "\n"
行返回除外。通过将 print(_:to:)
函数的输出发送到 ASCIILogger
的实例,您可以调用其 write(_:)
方法。
let s = "Hearts ♡ and Diamonds ♢"
print(s)
// Prints "Hearts ♡ and Diamonds ♢"
var asciiLogger = ASCIILogger()
print(s, to: &asciiLogger)
// Prints "Hearts \u{2661} and Diamonds \u{2662}"
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift ThrowingTaskGroup prefix(while:)用法及代码示例
- Swift TaskGroup max()用法及代码示例
- Swift ThrowingTaskGroup max(by:)用法及代码示例
- Swift TaskGroup filter(_:)用法及代码示例
- Swift ThrowingTaskGroup prefix(_:)用法及代码示例
- Swift ThrowingTaskGroup compactMap(_:)用法及代码示例
- Swift TaskGroup contains(where:)用法及代码示例
- Swift ThrowingTaskGroup next()用法及代码示例
- Swift TaskGroup allSatisfy(_:)用法及代码示例
- Swift ThrowingTaskGroup first(where:)用法及代码示例
- Swift TaskGroup prefix(_:)用法及代码示例
- Swift ThrowingTaskGroup dropFirst(_:)用法及代码示例
- Swift TaskGroup contains(_:)用法及代码示例
- Swift TaskGroup reduce(_:_:)用法及代码示例
- Swift TaskPriority init(rawValue:)用法及代码示例
- Swift TaskGroup flatMap(_:)用法及代码示例
- Swift TaskPriority ...(_:)用法及代码示例
- Swift ThrowingTaskGroup.Iterator用法及代码示例
- Swift ThrowingTaskGroup map(_:)用法及代码示例
- Swift TaskGroup next()用法及代码示例
- Swift ThrowingTaskGroup allSatisfy(_:)用法及代码示例
- Swift TaskGroup.Iterator用法及代码示例
- Swift ThrowingTaskGroup contains(where:)用法及代码示例
- Swift ThrowingTaskGroup contains(_:)用法及代码示例
- Swift TaskLocal用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 TextOutputStream。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。