Generics 在Swift中扩展所有类型?
浏览Swift的库代码,我发现:Generics 在Swift中扩展所有类型?,generics,swift,Generics,Swift,浏览Swift的库代码,我发现: extension T! : Printable { var description: String { get } } 该代码段似乎使用“description”字段扩展了所有类型。 当我尝试在代码中执行相同的操作时,会出现错误: 示例.swift:10:11:非标称类型“T!”无法扩展 以下是类似的问题: 但它们未能解决: 这是怎么回事?为什么库代码可以,但我的代码。。。不是吗 是否可以对所有类型或符合特定协议的所有类型进行测试 首先,它并不
extension T! : Printable {
var description: String { get }
}
该代码段似乎使用“description”字段扩展了所有类型。
当我尝试在代码中执行相同的操作时,会出现错误:
示例.swift:10:11:非标称类型“T!”无法扩展
以下是类似的问题:
- 这是怎么回事?为什么库代码可以,但我的代码。。。不是吗
- 是否可以对所有类型或符合特定协议的所有类型进行测试
T
,这是隐式的。因此,它扩展了隐式展开的可选类型,而不是所有类型
“标题”不是真正的Swift代码;它是自动生成的。在某些情况下,自动头生成器中可能存在错误,使其无法生成真正的Swift代码。不要太直截了当
在自动生成的“header”中,您注意到一件奇怪的事情,即某些内置语法收缩的应用不一致——类型声明不使用收缩,但扩展使用:
struct Array<T>
extension T[]
enum Optional<T>
extension T?
struct ImplicitlyUnwrappedOptional<T>
extension T!
这正是中显示的问题。这里有类似的问题(没有公认的答案:。可能有,Swift开发人员自己保留一些功能。你说得对!我想知道为什么库代码可以工作,但我的代码无法编译。
struct Array<T>
extension T[]
enum Optional<T>
extension T?
struct ImplicitlyUnwrappedOptional<T>
extension T!
extension ImplicitlyUnwrappedOptional : MyProtocol {
// ...
}