The Rust Programming Language - 第6章 枚举和模式匹配 - 6.3 if let 简洁控制流

6 枚举和模式匹配

枚举允许你通过列举可能的成员来定义一个类型。在本章,我们会了解枚举如何连同数据一起编码信息,还会学习一个特殊的枚举Option,另外,我们也会进一步了解match表达式中的模式匹配,针对不同的枚举值编写相应的代码,最后我们将会介绍if let (它是一个结构,能够方便处理代码中的枚举)

枚举是很多语言中都有的一个功能,不同语言功能各不相同。Rust中的枚举与F#、OCaml、和Haskell这样的函数式编程语言中的代数数据类型最为相似

6.3 if let 简洁控制流

当我们只想匹配一个模式时,if let 能够让我们以非常简洁的语法实现它。先让我们来看一个老例子,它是用match控制流运算符实现的

let some_u8_value = Some(0u8);
   match some_u8_value {
       Some(3) => println!("three"),
       _ => (),
   }

用match的时候就按部就班,虽然我们已经使用了 _ 通配符对我们不需要的分支进行处理,这样代码量已经很少了,但是其实跟if let相比,还是挺多的,那我们来用if let 对上述实现进行改写

if let Some(3) = some_u8_value {
       println!("three");
   }

是不是代码量少了很多?很强,有没有?其实,if let是match 的一个语法糖,它只会匹配列出来的分支而忽略其它可能。但是我们也可以在if let 中包含一个else,它在功能上其实相当于 _ 通配符,我们来看两个例子:

let mut count = 0;
   match coin {
       Coin::Quarter(state) => println!("State quarter from {:?}!",state),
       _ => count +=1,
   }

   let mut count = 0;
   if let Coin::Quarter(state) = coin {
       println!("State quarter from {:?}!",state);
   }else {
       count += 1;
   }

所以关于if let 的内容就这么多了,我们可以把它与match联系到一起来理解学习

小结

我们现在已经了解了用结构体、枚举创建一系列可以列举值的自定义类型。我们也了解了标准库的Option类型如何帮助你利用类型系统来避免出错。对于枚举成员的处理,我们又了解了match和if let

下一章我们将会学习Rust的模块系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
The Rust Programming Language》(Rust编程语言)是一本由Rust开发社区编写的权威指南和教程,用于学习和开发Rust编程语言。 Rust编程语言是一种开源、现代化的系统级编程语言,具有强大的内存安全性、并发性和性能。它最初由Mozilla开发,并于2010年首次发布。Rust的设计目标是实现安全、并发和快速的系统级编程,适用于像操作系统、浏览器引擎和嵌入式设备这样的低级应用程序。 《The Rust Programming Language》提供了对Rust编程语言的全面介绍。它从基本的语法和数据类型开始,然后涵盖了Rust的所有关键概念和特性,如所有权系统、借用检查器、模块化和并发编程等。这本书不仅适合初学者,还可以作为更有经验的开发者的参考手册。 书中详细介绍了Rust的主要特性,例如所有权系统,它可以避免常见的内存错误,如空指针和数据竞争。同时,该书还着重介绍了Rust的错误处理机制和泛型编程。读者将学习如何使用Rust编写高效、安全和易于维护的代码。 《The Rust Programming Language》还包含许多实用的示例代码和练习,帮助读者通过实践加深对Rust的理解。此外,书中还介绍了一系列构建工具和库,以及有用的开发工作程。 总之,《The Rust Programming Language》为学习和开发Rust编程语言的人们提供了清晰、全面的指南。无论您是初学者还是有经验的开发者,都可以从中受益,提高Rust编程的技能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值