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

标签 swift swift-protocols associated-types

所以我不必编写太多代码来复制我的错误 - 在这种情况下我可能应该使用泛型,但感觉我的解决方案应该有效。因此,以下代码块给了我一个“类型 DCServiceClient 不符合协议(protocol) 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 - 约束关联类型时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913660/

相关文章:

swift - 当类型符合多个协议(protocol)时,为什么不满足 Swift 协议(protocol)一致性

使用动态协议(protocol)类型的 Swift 动态类型初始化

swift - 使用通用关联类型扩展协议(protocol)

rust - 具有依赖于关联类型边界的默认方法的特征

ios - 存在键盘时快速向上移动 ScrollView

ios - AVAudioPlayer 音频中断和音量自行增加

ios - 约束不能正常工作

swift - Swift 协议(protocol)可以是单例的吗?

swift - 为什么过滤器无法将结构数组转换为协议(protocol)类型数组?

ios - UICollectionView 防止多次点击/调用 didSelectItemAt