Generic Initializer

init(reflecting:)

Creates a string with a detailed representation of the given value, suitable for debugging. 与えられた値の詳細な表現での文字列を作成します、デバッグに適するもの。

Declaration 宣言

init<Subject>(reflecting subject: Subject)

Discussion 解説

Use this initializer to convert an instance of any type to its custom debugging representation. The initializer creates the string representation of instance in one of the following ways, depending on its protocol conformance: このイニシャライザを使って、何らかの型のインスタンスをそれのあつらえのデバッグ表現に変換してください。イニシャライザは、instanceの文字列表現をそれのプロトコル準拠に依存して以下の方法の1つで作成します:

  • If subject conforms to the CustomDebugStringConvertible protocol, the result is subject.debugDescription. subjectが準拠するのがCustomDebugStringConvertibleプロトコルならば、結果はsubject.debugDescriptionです。

  • If subject conforms to the CustomStringConvertible protocol, the result is subject.description. subjectが準拠するのがCustomStringConvertibleプロトコルならば、結果はsubject.descriptionです。

  • If subject conforms to the TextOutputStreamable protocol, the result is obtained by calling subject.write(to: s) on an empty string s. subjectが準拠するのがTextOutputStreamableプロトコルならば、結果はsubject.write(to: s)を空の文字列s上で呼び出すことによって入手されます。

  • An unspecified result is supplied automatically by the Swift standard library. 未指定の結果はSwift標準ライブラリによって自動的に提供されます。

For example, this custom Point struct uses the default representation supplied by the standard library. 例えば、このあつらえのPoint structは、標準ライブラリによって提供される省略時の表現を使います。


struct Point {
    let x: Int, y: Int
}


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

After adding CustomDebugStringConvertible conformance by implementing the debugDescription property, Point provides its own custom debugging representation. CustomDebugStringConvertible準拠をdebugDescriptionプロパティを実装することによって追加後は、Pointはそれ独自のあつらえのデバッグ表現を提供します。


extension Point: CustomDebugStringConvertible {
    var debugDescription: String {
        return "Point(x: \(x), y: \(y))"
    }
}


print(String(reflecting: p))
// Prints "Point(x: 21, y: 30)"

See Also 参照

Converting Other Types to Strings 他の型を文字列に変換する