这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战
流程控制结构
流程控制结构包括以下几种,除此之外还有其他几种会在后续的文章进行介绍。
- if条件判断结构
- loop循环
- while循环
- for..in迭代
条件控制
本文主要介绍Rust 中简单的控制流语句if else,至于match 会在后续的文章中进行讲解。
if表达式允许根据条件执行不同的代码分支,需要注意的是条件必须是bool类型,而bool类型又分为显式和隐式。但是在Rust 中if表达式的条件必须时bool值,条件不能是0 or null等。
在if表达式中与条件相关联的代码块就叫做分支,可选的可以在后面加上一个else表达式,当if表达式后面的条件不成立时才会执行else之后的代码。
fn main() {
let num = 3;
if num < 5 {
println!("num is {}", num)
} else {
println!("num is {}", num)
}
}
同时if表达式可以结合else if和else一起使用,else if可以有多个,而else至多只能有一个。
fn main() {
let num = 15;
if num % 2 == 0 {
println!("能够被2整除")
} else if num % 3 == 0{
println!("能够被3整除")
} else if num % 4 == 0{
println!("能够被4整除")
} else {
println!("以上都不行")
}
}
如果在一个程序中重复多次的使用了else if代码的可读性就会变得很差,建议使用match进行重构代码,match会在后续文章中进行介绍。
我们知道if是一个表达式,因在可以将它放在let语句中等号的右边。需要注意的是在整个if结构中,每块返回的值的类型必须一致,因为rust是一门静态强类型语言,会在编译时推断变量的类型,因此就要求if表达式中每个可能成为结果的分支的返回值的类型必须是一致的。
fn main() {
let num = true;
let a = if num { 3 } else { 6 };
println!("a is {}", a)
}
循环控制
Rust共提供了三种循环,分别时loop循环、while循环和for循环。
loop循环
loop关键字告诉Rust重复的执行一块代码,直到强制停止。强制停止的方式有两种,一种是在终端中使用ctrl+c,这种方式比较暴力,不建议使用;另一种方式就是在loop循环中使用break关键字告诉程序何时停止循环。
fn main() {
let mut num = 5;
let ret = loop {
num -= 1;
if num == 2 {
break num
}
};
println!("ret is {}", ret)
}
while条件循环
while条件循环时每次执行循环体代码之前都会判断一次条件,当条件成立时执行循环体代码,条件不成立时就会直接执行while循环之后的代码。
fn main() {
let mut num = 5;
while num != 0 {
println!("num is {}", num);
num -= 1;
}
println!("while 循环结束")
}
for循环
可以使用for循环来遍历集合,虽然可以使用while循环也可以做到但是易错而且效率低。使用for循环更加简介紧凑,可以针对集合中的每个元素来执行代码。由于for循环的安全和间接性,所以for循环在rust中使用最多。
// 使用while循环
fn main() {
let arr = [1, 2, 3, 4, 5];
let index = arr.len();
let mut num = 0;
while num < index {
println!("{}", arr[num]);
num += 1;
}
}
// 使用for循环
fn main() {
let arr = [1, 2, 3, 4, 5];
for ele in arr.iter() {
println!("{}", ele)
}
}
如果想要像while循环一样根据条件执行若干次某段代码,就需要使用for + Range的组合了,Range是由标准库提供的,可以指定一个开始数字和结束数字,Range可以生成它们之间的数字,不包括结束数字,Range的rev方法可以反转Range。
fn main() {
for i in (1 ..4).rev() {
println!("{}", i);
}
}
结语
文章首发于微信公众号程序媛小庄,同步于掘金。
码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)