首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当结果类型用作关联值时,Swift遵从相等:类型不符合协议等式

当结果类型用作关联值时,Swift遵从相等:类型不符合协议等式
EN

Stack Overflow用户
提问于 2022-07-25 00:45:41
回答 1查看 273关注 0票数 0
代码语言:javascript
运行
复制
struct Book: Equatable {
    var book: String
}

enum BookAction: Equatable {
    case dataResponse(Result<Book, Error>)
}

我运行的是快速版本5.6.1。我试图理解为什么我会收到一个错误:“类型'BookAction‘不符合协议’赤道‘”。虽然我可以让它工作,如果我添加一个static func == (lhs: BoockAction, rhs: BookAction) -> Bool到枚举,我认为编译器会在幕后产生平等的代码,就像它为结构书。似乎它具备了所需的一切。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 01:03:58

如果Enum的关联值符合Equatable,则Enum可以从文档中自动符合Equatable

对于一个枚举,它的所有关联值都必须符合可等价物。(即使没有声明,没有关联值的枚举也具有相等的一致性。)

并且Result<Success, Failure>只在下列情况下才符合Equatable

Success符合EquatableFailure符合EquatableFailure符合Error

您的结果的失败只符合Error,而Error还不是Equatable。您可以尝试将Error替换为既符合Error又符合Equatable的类型。

代码语言:javascript
运行
复制
enum BookAction: Equatable {
    case dataResponse(Result<Book, ActionError>)
}

struct ActionError: Error, Equatable { }

参考:

https://developer.apple.com/documentation/swift/equatable https://developer.apple.com/documentation/swift/result

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73103079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档