The Rust Programming Language - 第18章 模式与模式匹配 - 18.2 Refutability(可反驳性):模式是否会匹配失效

本文深入探讨Rust中的模式匹配,特别是可反驳性和不可反驳性的概念。可反驳模式(如Some(x))可能无法匹配所有值,可能导致匹配失败,而不可反驳模式(如变量x)则可以匹配任何值。在函数、let语句和for循环中只能使用不可反驳模式,而if let和while let则适用于处理可反驳模式。通过示例展示了如何在实践中理解和使用这两种模式。
摘要由CSDN通过智能技术生成

18 模式与模式匹配

模式是Rust中的特殊语法,用来匹配类型中的结构,无论类型复杂与否。模式由以下一些内容组合而成:

字面值\解构的数组、枚举、元组或者结构体\变量\通配符\占位符,这些部分描述了我们需要处理的数据形状。(匹配模式其实可以理解为匹配项,简单理解就是把两个项目拉起来比较,看等不等于,等于的话我们就执行一些代码,不等于的话执行另一些代码。这个点就跟条件语句外加等于号一样,只不过Rust中把它专门做了个匹配模式)

18.2 Refutability(可反驳性):模式是否会匹配失效

模式有两种形式:可反驳的和不可反驳的(refutable & irrefutable)。不可反驳的模式能够匹配任何值,例如

let x = 5;

事实上x可以匹配任何值,所以不会失败,但是如下例子可能会匹配失败,所以是可反驳的

if let Some(x) = a_value

如果变量a_value中值是None而不是Some,那么Some(x)模式不能匹配

依照这个概念,函数、let 语句和for 循环只能接受不可反驳的模式,不然程序就是没有意义了

if let 和 while let 被限制为只接受可反驳的模式;因为它们可以处理匹配失败的情况

尝试在let 中使用可反驳模式

let Some(x) = some_option_value;

let Some(x) = so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值