public init<Subject>(describing instance: Subject)
@inlinable public init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible
@inlinable public init<Subject>(describing instance: Subject) where Subject : TextOutputStreamable
@inlinable public init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible, Subject : TextOutputStreamable
详细信息页面讨论了差异。
https://developer.apple.com/documentation/swift/string/init(描述:)-67ncf
如果您输入
在 Xcode 和“Jump to Definition”中,您将看到它们是如何定义的
之后的部分
where
与文档中的描述相匹配。尽管共享相同的名称,但每个重载对其通用和关联类型都有不同的约束,但 Apple 文档页面上的摘要部分不会显示这些约束,因此存在视觉上的歧义。
但是,如果您跟踪每个链接到其自己的页面,您将看到约束有何不同:
init<Subject>(describing instance: Subject) where Subject : TextOutputStreamable
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible, Subject : TextOutputStreamable
init<Subject>(describing instance: Subject)
init<Subject>(reflecting subject: Subject)
这是由于协议一致性和初始化器重载造成的。
init<Subject>(describing instance: Subject) where Subject : TextOutputStreamable
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible, Subject : TextOutputStreamable
init<Subject>(describing instance: Subject)
单击初始化程序的定义将提供以下信息,解释每个初始化程序的作用。