Rust匹配运算符

本文概述

  • 与Option < T> 匹配
  • 比赛内容详尽
匹配运算符允许我们将值与一系列模式进行比较, 并在找到匹配项时执行代码。模式可以是文字值, 变量名, 通配符和许多其他内容。
让我们通过一个简单的例子了解match运算符:
enum Computerlanguage{C, Cplus, Java, Csharp, }fn language(language:Computerlanguage){ match language {Computerlanguage::C=> println!("C language"), Computerlanguage::Cplus=> println!("C++ language"), Computerlanguage::Java=> println!("Java language"), Computerlanguage::Csharp=> println!("C# language"), }}fn main(){ language(Computerlanguage::C); language(Computerlanguage::Cplus); language(Computerlanguage::Java); language(Computerlanguage::Csharp); }

输出
C languageC++ languageJava languageC# language

在上面的示例中, Computerlanguage是一种自定义数据类型, 由四个变体组成, 分别是C, Cplus, Java和Csharp。 match运算符将语言的值与match运算符块中给定的表达式进行匹配。
与Option < T> 匹配 在某些情况下要获取T的内部值时, 将使用Option < T> 。
Option < T> 由两个变体组成:
  • 无:表示失败或价值不足。
  • Some(value):这是一个用T包裹值的元组结构。
【Rust匹配运算符】让我们通过一个例子来理解:
fn main(){ even_number(2); even_number(3); }fn even_number(n:i32){ let num=n; match checked_even(n){None=> println!("None"), Some(n)=> { if n==0 { println!("{} is a even number", num); } else { println!("{} is a odd number", num); }}, }}fn checked_even(number:i32)-> Option< i32> {Some(number%2)}

输出
2 is a even number3 is a odd number

比赛内容详尽 在Rust中, 匹配是详尽无遗的, 也就是说, 我们应该尽一切可能的情况使代码有效。假设我们忘记编写None案例, 那么Rust编译器将显示” 模式’ None’ 未覆盖” 的错误。
让我们通过一个例子来理解这种情况:
fn main(){ Some(5); }fn Value(n:Option< i32> ){match n{Some(n)=> println!("{}is a Number", n), }}

输出
Rust匹配运算符

文章图片

    推荐阅读