【发布时间】:2019-09-01 11:28:21
【问题描述】:
在 Swift 中,以下代码编译没有问题。
protocol P1 {
associatedtype T = Int
}
protocol P2 {
typealias T = Int
}
对我来说,它们的行为似乎几乎相同。我注意到的唯一区别是您何时可以使用 P1 有额外的限制,因为它具有关联的类型。特别是,let x: P1 是一个错误,而let x: P2 很好。
这两种协议之间的实际区别是什么?它们在编译代码中的处理方式不同吗?最后,使用P1 而不是P2 有什么优势吗?
为清楚起见进行编辑:
我知道关联类型和类型别名之间的工作区别,所以我很惊讶你甚至可以给关联类型一个固定值。这似乎违背了关联类型的全部目的。我想知道是否有任何实用程序可以为关联类型提供固定值,并且我想知道这两个协议在编译后是否不同。
【问题讨论】:
标签: swift swift-protocols type-alias associated-types