文書   >   Swift   >   Swift 標準ライブラリ   >   入力と出力   >   TextOutputStream
プロトコル
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(_:) メソッドは、"\n" 行の戻りを除いて、各 Unicode スカラーをエスケープすることによってその文字列入力を処理します。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}"
トピックス
インスタンスメソッド
与えられた文字列をストリームに追加します。
必須。
関連
以下により継承
準拠する型
以下も見よ
ストリーム
テキストストリーミング操作のソース。
トップへ
トップへ
トップへ
トップへ