为什么Swift设计为不允许协议使用泛型?

为什么Swift设计为不允许协议使用泛型?,swift,generics,protocols,swift-protocols,associated-types,Swift,Generics,Protocols,Swift Protocols,Associated Types,为什么Swift的设计师不允许这样做: protocol Download<T> { var x: T } 我想这是因为通过这种方式可以限制/默认关联类型,这在协议级别的泛型参数中是不可能的,但仅此而已吗?这是因为必须在编译类型之前定义该类型。这是必需的,因为Swift是一种类型安全的语言。为什么协议之外的泛型不这样呢?哈哈。我完全忘记了另一个问题 protocol Download { associatedtype: T var x: T }

为什么Swift的设计师不允许这样做:

protocol Download<T> {
    var x: T
}

我想这是因为通过这种方式可以限制/默认关联类型,这在协议级别的泛型参数中是不可能的,但仅此而已吗?

这是因为必须在编译类型之前定义该类型。这是必需的,因为
Swift
是一种类型安全的语言。

为什么协议之外的泛型不这样呢?哈哈。我完全忘记了另一个问题
protocol Download {
    associatedtype: T
    var x: T
}