Swift 5 新特性:结果类型 Result 搞特殊化的 Error

Swift 2 开始,同步抛出错误的标准做法是使用 throws/throw,处理是用 do/try/catch;异步错误使用的是 completion: @escaping (ResultType?, ErrorType?) -> Void 的形式进行回调。 然而一些第三方库已经发现了缺乏一个泛型 Result 类型的不方便,纷纷实现了自己的 Result 类型以及相关的 Monad 和 Functor 特性。

Swift 5 已经伴随 Xcode 10.2 正式发布,我们看到 Result 类型已经被加入到标准库中去,它有哪些设计考虑,如何使用,由浅入深地一起来了解一下吧。