• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

rust match 模式匹配摘录

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

模式匹配大概有以下几种:

  • let语句
  • if let语句
  • match表达式
  • 函数签名
  • for循环
  • while let语句
    // 1 let语句
    let x = 1;
    let option_x = Some(x);
    // 2 if let
    if let Some(num) = option_x {
      println!("num is : {}", num)
    }
    
    // 3 match表达式
    match x {
      1..=10 => println!("num is in range [1, 10]"),
      _ => println!("num out of range!"),
    }
    
    // 4 函数签名
    fn myfun(x: i32) {
      println!("x is : {}", x)
    }
    myfun(x);
    
    // 5 for 循环 
    for x in 1..10 {
        println!("num in loop is : {}", x)
    }
    
    // 6 while let
    let mut nums = vec![1,2,3];
    while let Some(num) = nums.pop() {
        println!("num in while let is : {}", num)
    }

注意while let语句不能写成

while let Some(num) = &mut vec![1, 2, 3].pop() {
    println!("num in while let is : {}", num)
}

每次相当于新生成一个vec。

match表达式

  1. 可以使用竖线 | 并列多个选项
  2. 范围模式。可以使用 ..= 列出一个范围,比如1..=10 代表范围[1, 10]。目前不支持 .. 比如1..10,代表范围[1,10),不包括10。for循环支持
  3. 通过@来绑定变量。
  4. 匹配守卫添加额外条件。额外条件可以使用外部变量y,而避免覆盖外部变量。匹配守卫也可以与 | 组合使用
  5. 通过 _ 来忽略值,一般做最后的兜底使用

范围模式仅支持char和数值

fn main() {
    let x = 60;
    let y = false;
    
    match x {
        10 | 11 => println!("x is 10, 11"),
        1..=9 => println!("x is in range [1, 9]"),
        id @ 12..=20 => println!("x in range [12, 20], id is {}", id),
        n if !y => println!("y is false, x is: {}", n),
        _ => println!("nothing match"),
    }
}

总结

模式匹配是rust语言的重要组成部分,只有掌握了才是地道的rust使用者。关说不练假把式,模式匹配有挺多知识点的,本文将知识点摘录到一个例子中,方便后续查阅。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab中datest()将日期和时间转换为字符串格式发布时间:2022-07-18
下一篇:
MATLAB数字图像处理学习笔记发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap