首页 > 解决方案 > 在 Swift 中,Never 在哪里声明它符合 Error?

问题描述

像这样的代码

func alwaysSucceeds(_ completion: (Result<String, Never>) -> Void) {
    completion(.success("yes!"))
}

alwaysSucceeds { result in
    switch result {
    case .success(let response):
        print(response)
    }
}

作品。但我找不到

extension Never: Error {}

在 Swift 标准库中,有人知道我在哪里可以找到它吗?

标签: swift

解决方案


Never在实施过程中增加了对Error协议的一致性

在 Swift 5 中。从基本原理

出于同样的原因,符合Hashable并被Equatable添加到 中Never,核心团队认为,作为接受该提案的一部分,也应该添加符合Error和被添加到。这两个额外的协议一致性都是在审查期间提出的。ComparableNever

正如 Leo 指出的,实现可以在Policy.swift中找到:

@frozen
public enum Never {}

extension Never: Error {}

extension Never: Equatable, Comparable, Hashable {}

推荐阅读