Swift 5 结果类型

标签 swift swift5

Apple 在 Swift 5 中引入了 Result 类型。它是具有两种情况的通用枚举:

public enum Result<Success, Failure: Error> {
    case success(Success), failure(Failure)
}

我个人习惯在网络调用中使用两个单独的完成 success: Completionfailure: Completion,但据我现在所见,Apple 插入我们使用单一完成Result 类型,然后在里面执行开关。那么这种使用 Result 的方法有什么优势呢?因为在很多情况下我可以省略错误处理并且不写这个switch。谢谢。

最佳答案

Resultfailure 时,您不应该忽略这些情况。你不应该用 Result 来做,也不应该用失败的闭包来做。您应该处理错误

无论如何,引入Result 类型是为了简化完成处理程序。您可以使用单个闭包来处理成功或失败(如果两个单独的闭包更好,则基于主要意见)。 Result 也是为错误处理而设计的。您可以简单地创建自己的符合 Errorenum,然后您可以创建自己的错误案例。

关于Swift 5 结果类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55573364/

相关文章:

swift - 我可以使用 Xcode 11 在 Mojave 上编译 swift 5.1 吗?

ios - 亚马逊 Cognito 与 SwiftUI

swift - 为什么不能在函数闭包类型的类型别名上使用 @autoclosure?

swift - 基于种子 Swift 3 生成随机值

ios - 使用 Grand Central Dispatch IOS Swift Xcode 6.3.1 的问题

ios - (SIGABRT尝试使用未知的类项目名称)EXC_BAD_ACCESS错误在Xcode 11,Swift 5,iOS 13中的强引用变量上

ios - 将 UITableViewCell 中的 UIButton 点击​​手势绑定(bind)到 viewModel 中的可观察对象

iOS swift : Cannot Manipulate String: Value of type 'String' has no member 'firstIndex'

swift - 从 UIView 中删除特定子层

ios - 线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x48)avaudiofoundation