首页 > 图灵资讯 > 技术篇>正文

RUST 每日一省:if let & while let

2023-04-23 09:35:33

  当我们使用match时,我们必须完全匹配它。如果你只需要判断一个特定的分支,match是冗余的,if let只能匹配感兴趣的特定分支, 在这种情况下,写作比match简单。

  if let

  if let 的语法为 if let PATTERN=EXPRESSION{BODY}。 后面可以跟一个可选的else分支。use std::collections::HashMap;fn main() {let mut map = HashMap::new();map.insert("one", 1);map.insert("two", 2);let value = if let Some(v) = map.get("one") {v + 1} else {0};println!({}, value);}

  if let块和whilet块 let块还将创建新的作用域, value是Option类型, 所以在if 所有权将在let赋值操作中转移,value将不再可用。如果value被Option取代没问题,因为i32是复制语义,也就是我们所说的Copy,大家可以自己验证。 fn main(){ let value = Some(String::from("hello world")); if let Some(v) = value{ println!("{:?}",v); } //println!("{:?}",value);}若不注释println!("{:?}",value);则会报错

RUST 每日一省:if let & while let_后端

  如果if 如果let对应的模式匹配不成功,则将执行else分支的代码。此外,我们还可以混合if let、else if及else if let表达式匹配。这种混合语法可以提供更多的灵活性和一系列if let、else if、else if let分支中的条件不需要相互关联。 fn main() {let value1: Option = None;let value2 = false;let value3: Result = Ok(20);if let Some(value) = value1{ println!(value1, {}", );} else if value2 { println!(value2!");} else if let Ok(value) = value3{ if value> 30 { println!(value3 > 30"); } else { println!(value3 < 30"); }} else { println!("end"); }}

  while let

  while的条件循环 let的结构和if let非常相似,但它将反复执行相同的模式匹配,直到失败。例如如下。 let a = Range(..);while let Some(i) = a.next() {// do something}

上一篇 扎实打牢数据结构算法根基,从此不怕算法面试系列之001 week01 02-01 什么是算法?
下一篇 Python环境的搭建

文章素材均来源于网络,如有侵权,请联系管理员删除。