为什么受约束的协议仍然具有自我或相关类型要求

时间:2019-05-09 15:38:54

标签: swift protocols associated-types

请考虑以下具有关联类型的协议。

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

0 个答案:

没有答案