[易学易懂系列|rustlang语言|零基础|快速入门|(9)]
有意思的基础知识
我们今天再来看看流程控制。
条件控制 if-else if -else:
/ Simplest Example let team_size = 7; if team_size < 5 { println!("Small"); } else if team_size < 10 { println!("Medium"); } else { println!("Large"); } // partially refactored code let team_size = 7; let team_size_in_text; if team_size < 5 { team_size_in_text = "Small"; } else if team_size < 10 { team_size_in_text = "Medium"; } else { team_size_in_text = "Large"; } println!("Current team size : {}", team_size_in_text); //optimistic code let team_size = 7; let team_size_in_text = if team_size < 5 { "Small" //:star:️no ; } else if team_size < 10 { "Medium" } else { "Large" }; println!("Current team size : {}", team_size_in_text); let is_below_eighteen = if team_size < 18 { true } else { false };
模式匹配 match :
let tshirt_width = 20; let tshirt_size = match tshirt_width { 16 => "S", // check 16 17 | 18 => "M", // check 17 and 18 19 ... 21 => "L", // check from 19 to 21 (19,20,21) 22 => "XL", _ => "Not Available", }; println!("{}", tshirt_size); // L let is_allowed = false; let list_type = match is_allowed { true => "Full", false => "Restricted" // no default/ _ condition can be skipped // Because data type of is_allowed is boolean and all possibilities checked on conditions }; println!("{}", list_type); // Restricted let marks_paper_a: u8 = 25; let marks_paper_b: u8 = 30; let output = match (marks_paper_a, marks_paper_b) { (50, 50) => "Full marks for both papers", (50, _) => "Full marks for paper A", (_, 50) => "Full marks for paper B", (x, y) if x > 25 && y > 25 => "Good", (_, _) => "Work hard" }; println!("{}", output); // Work hard
let mut a = 1; while a <= 10 { println!("Current value : {}", a); a += 1; //no ++ or -- on Rust } // Usage of break and continue let mut b = 0; while b < 5 { if b == 0 { println!("Skip value : {}", b); b += 1; continue; } else if b == 2 { println!("Break At : {}", b); break; } println!("Current value : {}", b); b += 1; } // Outer break let mut c1 = 1; 'outer_while: while c1 < 6 { //set label outer_while let mut c2 = 1; 'inner_while: while c2 < 6 { println!("Current Value : [{}][{}]", c1, c2); if c1 == 2 && c2 == 2 { break 'outer_while; } //kill outer_while c2 += 1; } c1 += 1; }
loop { println!("Loop forever!"); } // Usage of break and continue let mut a = 0; loop { if a == 0 { println!("Skip Value : {}", a); a += 1; continue; } else if a == 2 { println!("Break At : {}", a); break; } println!("Current Value : {}", a); a += 1; } // Outer break let mut b1 = 1; 'outer_loop: loop { //set label outer_loop let mut b2 = 1; 'inner_loop: loop { println!("Current Value : [{}][{}]", b1, b2); if b1 == 2 && b2 == 2 { break 'outer_loop; // kill outer_loop } else if b2 == 5 { break; } b2 += 1; } b1 += 1; }
for
for a in 0..10 { //(a = o; a <10; a++) // 0 to 10(exclusive) println!("Current value : {}", a); } // Usage of break and continue for b in 0..6 { if b == 0 { println!("Skip Value : {}", b); continue; } else if b == 2 { println!("Break At : {}", b); break; } println!("Current value : {}", b); } // Outer break 'outer_for: for c1 in 1..6 { //set label outer_for 'inner_for: for c2 in 1..6 { println!("Current Value : [{}][{}]", c1, c2); if c1 == 2 && c2 == 2 { break 'outer_for; } //kill outer_for } } // Working with arrays/vectors let group : [&str; 4] = ["Mark", "Larry", "Bill", "Steve"]; for n in 0..group.len() { //group.len() = 4 -> 0..4 :-1: check group.len()on each iteration println!("Current Person : {}", group[n]); } for person in group.iter() { //:+1: group.iter() turn the array into a simple iterator println!("Current Person : {}", person); }
以上,希望对你有用。
如果遇到什么问题,欢迎加入:rust新手群,在这里我可以提供一些简单的帮助,加微信:360369487,注明:博客园+rust
本人精通java高并发,DDD,微服务等技术实践,以及python,golang技术栈。 本人姓名郭莹城,坐标深圳,前IBM架构师、咨询师、敏捷开发技术教练,前IBM区块链研究小组成员、十四年架构设计工作经验,《区块链核心技术与应用》作者之一, 现有成熟团队提供区块链开发相关业务(公链,交易所,钱包,Dapp,智能合约)。 工作微信&QQ:360369487,交易所开发与区块链钱包开发业务,加我注明:博客园+开发,想学习golang和rust的同学,也可以加我微信,备注:博客园+golang或博客园+rust,谢谢!
参考文章: https://learning-rust.github.io/docs/a10.control_flows.html