Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

模式与模式匹配

ch19-00-patterns.md

模式pattern)是 Rust 中一种特殊的语法,用来匹配类型的结构,无论类型简单还是复杂。将模式与 match 表达式及其他结构结合使用,可以让你对程序的控制流有更多掌控。模式由以下内容中的某种组合构成:

  • 字面值
  • 解构后的数组、枚举、结构体或元组
  • 变量
  • 通配符
  • 占位符

模式的一些例子包括 x(a, 3)Some(Color::Red)。在允许使用模式的上下文中,这些组成部分描述了数据的形状。程序随后会让值与模式匹配,以决定它是否具有继续运行某段特定代码所需的数据形状。

要使用模式,我们会把它与某个值进行比较。如果模式匹配该值,就能在代码中使用这个值的各个部分。回忆一下第六章讨论 match 表达式时用到模式的情形,比如硬币分类器的例子。如果值符合模式的形状,就可以使用其中那些被命名的部分;如果不符合,与该模式关联的代码就不会运行。

本章可以视为一份与模式有关内容的参考。我们会介绍哪些位置可以合法使用模式,可反驳(refutable)模式与不可反驳(irrefutable)模式之间的区别,以及你可能见到的各种模式语法。到本章末尾,你将掌握如何用模式以清晰的方式表达许多概念。