當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift String init(reflecting:)用法及代碼示例


初始化器

init(reflecting:)

創建具有給定值的詳細表示的字符串,適合調試。

聲明

init<Subject>(reflecting subject: Subject)

詳述

使用此初始化程序將任何類型的實例轉換為其自定義調試表示。初始化程序根據其協議一致性以下列方式之一創建instance 的字符串表示:

  • 如果 subject 符合 CustomDebugStringConvertible 協議,則結果為 subject.debugDescription

  • 如果 subject 符合 CustomStringConvertible 協議,則結果為 subject.description

  • 如果 subject 符合 TextOutputStreamable 協議,則通過在空字符串 s 上調用 subject.write(to: s) 獲得結果。

  • Swift 標準庫會自動提供未指定的結果。

例如,這個自定義 Point 結構使用標準庫提供的默認表示。


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
//         }"

通過實現debugDescription 屬性添加CustomDebugStringConvertible 一致性後,Point 提供了自己的自定義調試表示。


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


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

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 String init(reflecting:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。