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


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


用法一

初始化器

init(describing:)

創建一個表示給定值的字符串。

聲明

init<Subject>(describing instance: Subject) where Subject : TextOutputStreamable

詳述

使用此初始化程序將任何類型的實例轉換為其首選表示形式,即 String 實例。初始化程序以下列方式之一創建 instance 的字符串表示形式,具體取決於其協議一致性:

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

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

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

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

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


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


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

通過實現description 屬性添加CustomStringConvertible 一致性後,Point 提供自己的自定義表示。


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


print(String(describing: p))
// Prints "(21, 30)"

可用版本

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

用法二

初始化器

init(describing:)

創建一個表示給定值的字符串。

聲明

init<Subject>(describing instance: Subject)

詳述

使用此初始化程序將任何類型的實例轉換為其首選表示形式,即 String 實例。初始化程序以下列方式之一創建 instance 的字符串表示形式,具體取決於其協議一致性:

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

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

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

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

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


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


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

通過實現description 屬性添加CustomStringConvertible 一致性後,Point 提供自己的自定義表示。


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


print(String(describing: p))
// Prints "(21, 30)"

可用版本

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

用法三

初始化器

init(describing:)

創建一個表示給定值的字符串。

聲明

init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible, Subject : TextOutputStreamable

詳述

使用此初始化程序將任何類型的實例轉換為其首選表示形式,即 String 實例。初始化程序以下列方式之一創建 instance 的字符串表示形式,具體取決於其協議一致性:

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

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

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

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

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


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


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

通過實現description 屬性添加CustomStringConvertible 一致性後,Point 提供自己的自定義表示。


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


print(String(describing: p))
// Prints "(21, 30)"

可用版本

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

用法四

初始化器

init(describing:)

創建一個表示給定值的字符串。

聲明

init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible

詳述

使用此初始化程序將任何類型的實例轉換為其首選表示形式,即 String 實例。初始化程序以下列方式之一創建 instance 的字符串表示形式,具體取決於其協議一致性:

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

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

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

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

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


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


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

通過實現description 屬性添加CustomStringConvertible 一致性後,Point 提供自己的自定義表示。


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


print(String(describing: p))
// Prints "(21, 30)"

可用版本

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

相關用法


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