Rust 专题
您的位置:rust > Rust专题 > 匹配运算符
匹配运算符
作者:--    发布时间:2019-11-20

匹配运算符允许将值与一系列模式进行比较,并在找到匹配项时执行代码。 模式可以是文字值,变量名称,通配符和许多其他内容。

下面通过一个简单的例子来理解匹配运算符:

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 language
c++ language
java language
c# language

在上面的示例中,computerlanguage是一种自定义数据类型,由四种变体组成:ccplusjavacsharp。 匹配运算符将语言的值与匹配运算符块中给出的表达式匹配。

与选项t匹配

当想要在某些情况下获得t的内部值时,使用选项<t>

选项 <t>包含两个变体:

  • none:表示失败或缺少值。
  • 一些(值):它是一个用t包装值的元组结构。

通过下面一个例子来理解:

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 number
3 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),  
  }  
}

编译输出结果如下 -


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册