为什么协议不能为其继承的协议的关联类型指定具体类型,而将其用作函数的参数类型

时间:2019-12-20 12:25:39

标签: swift generics swift-protocols

为什么不能为协议所继承的协议的关联类型指定具体类型的协议不能用作函数的参数类型?

示例:

protocol ProtoA {
    associatedtype Item
    var arr: [Item] { get set }
}

protocol ProtoB: ProtoA where Item == String { }

final class MyClass {

    func myFunc(p: ProtoB)  { }
}

我得到了错误:

  

协议“ ProtoB”只能用作通用约束   因为它具有“自我”或相关类型要求

编译器知道实现ProtoB的结构或类具有类型为[String]的属性“ arr”,为什么我会看到此错误?

0 个答案:

没有答案