# 控制流
# if与else
if表达式允许你依据条件来执行不同的代码分支。
条件必须是bool类型的。
fn main() {
let number = 6;
if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
从上向下执行那个在前面条件符合就输出,前者优先原则。
# 在let语句中使用if
因为if是一个表达式,所以可以将它放在let语句中 。
应为if是一个表达式,所以可以放在等号的右边。【代码案例如下:】
fn main() {
let condition = true;
// 块的最后一条语句
let number = if condition { 5 } else { "six" };
// 输出是 5
println!("The value of number is: {}", number);
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
rust是一个强类型的语言,也是一个特别安全的语言。所以说在编译的时候就必须知道变量它的·类型是什么。方便于这个变量在其他地方可以合理是使用。
注意
在let语句中,使用if、else表达式里面可能成为结果的分支返回的类型必须是一样的。
# rust循环
loop、while、for
loop表达式
loop关键字告诉rust反复的执行一块代码,直到你喊停。(例子如下:)
fn main() {
loop {
println!("again!");
}
}
1
2
3
4
5
2
3
4
5
上面的代码会一直循环下去,怎么停?
答:ctrl + c。使用break关键字来打断循环。
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {}", result);
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
while条件循环
每一次执行循环体之前都要判断一次条件。【while条件循环为这种模式而诞生!】
例子1
fn main() {
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
println!("LIFTOFF!!!");
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 使用for循环遍历集合
可以使用 while 或loop 来遍历集合,但是易错且低效。(例子)
fn main() {
let a = [10, 20, 30, 40, 50];
let mut index = 0;
// 条件容易出错!长度越界遍历集合。
while index < 5 {
println!("the value is: {}", a[index]);
index += 1;
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
使用 for 循环更简洁紧凑,它可以针对集合中的每个元素来执行一些代码。
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a {
// 输出元素。
println!("the value is: {}", element);
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
element 是直接引用这个元素,可以先理解为一个指针!
# Range是什么?
答:标准库提供。
- 定一个开始数字和一个结束数字,Range可以生成它们之间的数字(不含结束)。
- rev 方法可以反转 Range。
fn main() {
for number in (1..4).rev() {
println!("{}!", number);
}
println!("LIFTOFF!!!");
}
1
2
3
4
5
6
2
3
4
5
6
# 总结控制流
for循环遍历集合又安全又快速。首先索引不会出错,其次在每一次遍历的时候我们不需要检查一些条件。这样就执行速度就更加块了。
for循环在rust用的最多的。