【问题标题】:Why was Swift designed to not allow generics for protocols? [duplicate]为什么 Swift 被设计为不允许泛型用于协议? [复制]
【发布时间】:2019-05-31 13:56:30
【问题描述】:

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

protocol Download<T> {
    var x: T
}

而是强迫我们这样做:

protocol Download {
    associatedtype: T
    var x: T
}

我想这是因为通过这种方式您可以限制/默认关联类型,这是在协议级别使用泛型参数无法实现的,但仅此而已吗?

【问题讨论】:

  • 哈。我忘记了其他问题

标签: swift generics protocols swift-protocols associated-types


【解决方案1】:

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

【讨论】:

  • 为什么对于协议之外的泛型不是这样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 2014-08-05
  • 1970-01-01
相关资源
最近更新 更多