Skip to content

Commit

Permalink
update ch18-02 close #732
Browse files Browse the repository at this point in the history
  • Loading branch information
KaiserY committed Sep 17, 2023
1 parent 3c70b99 commit 5424e85
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/ch18-02-refutability.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
模式有两种形式:refutable(可反驳的)和 irrefutable(不可反驳的)。能匹配任何传递的可能值的模式被称为是 **不可反驳的***irrefutable*)。一个例子就是 `let x = 5;` 语句中的 `x`,因为 `x` 可以匹配任何值所以不可能会失败。对某些可能的值进行匹配会失败的模式被称为是 **可反驳的***refutable*)。一个这样的例子便是 `if let Some(x) = a_value` 表达式中的 `Some(x)`;如果变量 `a_value` 中的值是 `None` 而不是 `Some`,那么 `Some(x)` 模式不能匹配。

函数参数、 `let` 语句和 `for` 循环只能接受不可反驳的模式,因为通过不匹配的值程序无法进行有意义的工作`if let``while let` 表达式被限制为只能接受可反驳的模式,因为根据定义他们意在处理可能的失败:条件表达式的功能就是根据成功或失败执行不同的操作
函数参数、`let` 语句和 `for` 循环只能接受不可反驳的模式,因为当值不匹配时,程序无法进行有意义的操作`if let``while let` 表达式可以接受可反驳和不可反驳的模式,但编译器会对不可反驳的模式发出警告,因为根据定义它们旨在处理可能的失败:条件表达式的功能在于它能够根据成功或失败来执行不同的操作

通常我们无需担心可反驳和不可反驳模式的区别,不过确实需要熟悉可反驳性的概念,这样当在错误信息中看到时就知道如何应对。遇到这些情况,根据代码行为的意图,需要修改模式或者使用模式的结构。

Expand Down

0 comments on commit 5424e85

Please sign in to comment.