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
类型已经被加入到标准库中去,它有哪些设计考虑,如何使用,由浅入深地一起来了解一下吧。