欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Rust学习笔记_09——模式匹配

Rust学习笔记_09——模式匹配

2025/7/4 5:27:10 来源:https://blog.csdn.net/LuckyLay/article/details/144201160  浏览:    关键词:Rust学习笔记_09——模式匹配

Rust学习笔记_06——控制流(2)
Rust学习笔记_07——枚举和范围
Rust学习笔记_08——String

Matching Values

文章目录

    • Matching Values
      • 1. 介绍
      • 2. 匹配字面量
      • 3. 匹配枚举
      • 4. 匹配范围
      • 5. 匹配守卫
      • 6. 匹配绑定值


1. 介绍

Rust的模式匹配主要通过match表达式来实现,它可以与多种模式进行匹配,并根据匹配到的模式执行相应的代码块。在模式匹配中,匹配值(Matching Values)是指match表达式中被检查的变量或表达式的值。

let x = 1;match x {pattern1 => {// 当x匹配pattern1时执行的代码}pattern2 => {// 当x匹配pattern2时执行的代码}// 可以有更多的模式_ => {// 当x不匹配任何前面的模式时执行的代码(也称为"通配符"模式)}
}

2. 匹配字面量

let number = 1;match number {1 => println!("One"),2 => println!("Two"),3 => println!("Three"),_ => println!("Something else"),
}

3. 匹配枚举

enum Message {Quit,Move { x: i32, y: i32 },Write(String),ChangeColor(i32, i32, i32),
}let msg = Message::ChangeColor(255, 0, 0);match msg {Message::Quit => println!("Quit the game"),Message::Move { x, y } => println!("Move to position ({}, {})", x, y),Message::Write(text) => println!("Write: {}", text),Message::ChangeColor(r, g, b) => println!("Change color to RGB({}, {}, {})", r, g, b),
}

4. 匹配范围

let number = 50;match number {0...9   => println!("0-9"),10...19 => println!("10-19"),20...49 => println!("20-49"),50...99 => println!("50-99"),_       => println!("100+"),
}

5. 匹配守卫

let number = 10;match number {n if n < 20 => println!("less than 20"),n if n >= 20 && n < 100 => println!("between 20 and 99"),_ => println!("100 or greater"),
}

6. 匹配绑定值

let point = (3, 4);match point {(0, 0) => println!("Origin"),(x, 0) => println!("On the x-axis at {}", x),(0, y) => println!("On the y-axis at {}", y),(x, y) => println!("At position ({}, {})", x, y),
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com