请考虑以下具有关联类型的协议。
protocol P1 {
associatedtype X
}
然后我创建一个子协议,将关联类型约束为Int
。
protocol P2: P1 where X == Int {
}
然后尝试使用它,我仍然收到错误
class UsesP2 {
//Protocol 'P2' can only be used as a generic constraint
// because it has Self or associated type requirements
var p2: P2!
}
协议“ P2”只能用作通用约束,因为它具有 自我或相关类型要求
我认为,此时已满足关联类型,隐式定义了类型别名,并且P2
只能与Int
一起使用。 P1
甚至不能转换为P2
。