CustomStringConvertibleプロトコル


こんにちは!リリー:-)
今日は、オブジェクトをStringに変換するときにカスタムStringに変換できるCustomStringConvertibleプロトコルについて説明します.
アップルの開発者ドキュメントの記事(以下のリンク)から作成😊
📑コメントドキュメント
[Apple Developer Documentaion] CustomStringConvertible

CustomStringConvertibleプロトコル


このプロトコルのタイプに従うと、インスタンスをstringに変換するときに、自分で定義した表現として使用できます.
プロトコルを実装する方法は、タイプ内の例示的なプロトコルを定義する(description).var description: String { get }CustomStringConvertibleプロトコルに適合するタイプのインスタンスを出力しようとすると、descriptionプロトコルで定義された表現(戻り値)を入力して出力します.
struct Point {
    let x: Int, y: Int
}

let p = Point(x: 21, y: 30)
print(p)
// Prints "Point(x: 21, y: 30)" 

extension Point: CustomStringConvertible {
    var description: String {
        return "(\(x), \(y))"  // customized representation
    }
}

print(p)
// Prints "(21, 30)"
でも気をつけたいのは!descriptionへの直接アクセスは推奨されません.(p.description
❌)
逆に、String(describing:)の頭文字でログインすることをお勧めします.String(describing:)頭文字タグは、CustomStringConvertibleプロトコルに適合するすべてのタイプをパラメータとして受け入れ、descriptionプロトコルの戻り値(CustomString)に初期化する.
struct Point: CustomStringConvertible {
    let x: Int, y: Int

    var description: String {
        return "(\(x), \(y))"
    }
}

let p = Point(x: 21, y: 30)
let s = String(describing: p) // 프로토콜을 준수하는 인스턴스를 인자값으로 받아 초기화
print(s)
// Prints "(21, 30)"