Rust 从 0 到 1- 枚举 -if let 控制流
if let 让我们可以更简洁的来处理只匹配一个“模式”而忽略其他“模式”的场景,我们先看下不使用 if let :
复制代码
我们只想在匹配 Quarter 时进行操作,不想处理任何其他值或 None 值。但是为了满足 match 表达式穷尽性的要求,必须在最后加上 _ => (),有点啰嗦,不是吗。if let 提供了一种更简洁的方式:
复制代码
if let <模式>=<表达式>,使用 if let 意味着更简洁,可以认为是 match 的一个语法糖,但是,这样会失去 match 对穷尽性的强制检查,在这一点上,需要大家结合实际的场景去权衡。
同时可以在 if let 中使用 else,效果和 match 中的 _ 分支相同:
复制代码
总结
我们介绍了如何使用枚举来创建自定义类型以及 Rust 标准库中的 Option<T> 类型。同时也介绍了经常和枚举结合使用的 match 和 if let 控制流。使用结构体和枚举创建自定义类型可以保证我们的 API 的类型安全:编译器会确保函数只会得到它期望的类型的值。
下面将介绍 Rust 中的“模块”,它帮助我们组织良好的 API:使用起来直观并且只向用户暴露需要的部分。
版权声明: 本文为 InfoQ 作者【山】的原创文章。
原文链接:【http://xie.infoq.cn/article/02adfb65f6a013cd2edfd9b48】。文章转载请联系作者。
评论