【发布时间】:2019-08-29 14:22:44
【问题描述】:
在 Swift 5 中,Apple 引入了 Result 类型。这是有两种情况的通用枚举:
public enum Result<Success, Failure: Error> {
case success(Success), failure(Failure)
}
我个人曾经在网络调用 success: Completion 和 failure: Completion 中使用两个单独的完成,但从我现在看到的情况来看,Apple 推动我们使用带有 Result 类型的单一完成,然后在内部执行切换。那么Result 这种方法的优势是什么?因为在很多情况下,我可以省略错误处理而不写这个switch。谢谢。
【问题讨论】:
-
Imo 到处切换会很痛苦。我仍然会坚持使用两个完成处理程序。这样一来,控制流程就更清晰了。
-
不强制使用
Result。你可以做你想做的。但我相信很多很多人(比如我自己)都会欣赏并利用它。 -
与 Objective-C 不兼容可能是个问题。重写你所有的代码,那是没用的。优点:当你在做相同的代码而不是在其他地方分解它时,比如“重新显示一些东西,启用用户交互等”。在失败和成功的情况下。