Swift 5.0 值得关注的特性:增加 Result 枚举类型

本文介绍了Swift 5.0中引入的Result枚举类型,用于优化异步操作的返回结果表示。Result枚举使得成功值和错误能够明确互斥,避免了使用optional带来的问题。文章详细讲解了Result的基本用法,包括如何创建、拆包,以及相关的便利方法如map、flatMap、get等,并讨论了其与Equatable和Hashable的交互。此外,还提到了可抛出异常的闭包初始化器,帮助开发者更好地处理可能出现的异常情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HackingSwift: What’s new in Swift 5.0

Result 还是 Result

背景

在异步获取数据的场景中,常见的回调的数据结构是这样的:表示获取成功的数据,表示获取失败的 error。因为数据可能获取成功,也可能失败。因此回调中的数据和错误都是 optional 类型。

比如 CloudKit 中保存数据的一个函数就是这样:

func save(_ record: CKRecord, completionHandler: @escaping (CKRecord?, Error?) -> Void)

这种形式的缺点是没有体现出两种结果的互斥关系:如果数据成功获取到了,那么 error 一定为空。如果 error 有值,数据一定是获取失败了。

Swift 中枚举的能力相比 OC 有着很大的进步,每个枚举值除了可以是常规的基础类型,还可以是一个关联的类型。有了这样的特性后用枚举来优化返回结果的数据结构显得水到渠成:

enum Result where Failure : Error {    /// A success, storing a `Success` value.    case success(Success)        /// A failure, storing a `Failure` value.    case failure(Failure)}

基本用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值