文書   >   Swift   >   Swift 標準ライブラリ   >   入力と出力   >   TextOutputStream


プロトコル


TextOutputStream


テキストストリーミング操作のターゲットになることができる型。





宣言


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(_:) メソッドは、"\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}"


トピックス





インスタンスメソッド


関連





以下により継承


StringProtocol





準拠する型


以下も見よ





ストリーム

















トップへ












トップへ












トップへ












トップへ
目次
Xcode 10 の新機能

  • 言語:Swift
  • SDK
  • XCode 8.0+
  • フレームワーク
  • Swift 標準ライブラリ
  • 宣言
  • 概要
  • トピックス
  • 関連
  • 以下も見よ












  • トップへ












    トップへ












    トップへ












    トップへ