Result
原文:Apple Developer Documentation
文档摘录翻译
Result 定义
1 | @frozen enum Result<Success, Failure> where Failure : Error |
Result 应用
编写可能失败Failable的异步API
编写可能失败的函数、方法或其他API时,可以在声明中使用throws关键字来标示此API可抛出异常。但是我们不能将throws关键字用于异步返回的API,此时可用Result枚举来保存异步调用的结果信息,并利用关联值来携带有关的值。
1 | let queue = DispatchQueue(label: “com.example.queue”) |
保存抛出异常函数的结果
有时,我们需要保留函数或其他抛出异常表达式的整个结果。例如,需要序列化结果,或者将其作为值传递给程序的其他部分。在这些情况下,请使用Result。
转换抛出异常表达式为Result
使用Result枚举的init(catching:)进行转换:
1 | let singleSample = Result { try UnreliableRandomGenerator().random() } |
转换Result到抛出异常表达式
1 | let integerResult: Result<Int, Error> = .success(5) |
Author: Huang Jiaru
Link: https://jiaruh.netlify.app/2020/11/06/Result/
License: 知识共享署名-非商业性使用 4.0 国际许可协议