因此,我不必编写太多代码来复制错误-可能是在这种情况下我应该使用泛型,但是感觉我的解决方案应该可以工作。因此,以下代码块为我提供了“类型DCServiceClient不符合协议DMServiceClient”:

protocol DMServiceEndpoint { }
protocol DCServiceEndpoint: DMServiceEndpoint { }

protocol DMServiceClient {
    typealias Endpoint: DMServiceEndpoint
}

class DCServiceClient: DMServiceClient {
    typealias Endpoint = DCServiceEndpoint
}


但是,如果删除对关联类型(端点)的约束,则编译时不会出现任何问题。由于DCServiceEndpoint符合约束(DMServiceEndpoint)看起来它应该编译。关于我在这里缺少什么的任何想法?谢谢你们!

最佳答案

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 {}

关于swift - Swift-约束关联类型时编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34913660/

10-10 09:48