Swift - 约束关联类型时编译错误

时间:2016-01-21 01:09:47

标签: swift swift-protocols associated-types

所以我不必编写很多代码来复制我的错误 - 在这种情况下我应该使用泛型,但感觉我的解决方案应该有效。所以下面的代码块给了我一个"类型DCServiceClient不符合协议DMServiceClient":

protocol DMServiceEndpoint { }
protocol DCServiceEndpoint: DMServiceEndpoint { }

protocol DMServiceClient {
    typealias Endpoint: DMServiceEndpoint
}

class DCServiceClient: DMServiceClient {
    typealias Endpoint = DCServiceEndpoint
}

但是,如果我删除关联类型(端点)上的约束,它将编译没有任何问题。因为DCServiceEndpoint符合约束(DMServiceEndpoint),所以它似乎应该编译。关于我在这里缺少什么的想法?谢谢你们!

1 个答案:

答案 0 :(得分:1)

protocol DMServiceEndpoint { }
protocol DCServiceEndpoint: DMServiceEndpoint { }

protocol DMServiceClient {
    typealias Endpoint: DMServiceEndpoint
}
class DCServiceClient: DMServiceClient {
    typealias Endpoint = newClass // implementation a class conforms to  EndPoint
}
// add new class conforms to DMServiceEndpoint
class newClass: DCServiceEndpoint {}