Bilibili
条件分支
- 使用
if
和 else
实现条件判断 - 使用
else if
实现多重条件判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| fn main() {
// 单个条件
let number = 10;
if number > 5 {
println!("Number is greater than 5");
} else {
println!("Number is less than or equal to 5");
}
// 多个条件
let favorite_fruit = "apple";
if favorite_fruit == "apple" {
println!("I like apples.");
} else if favorite_fruit == "banana" {
println!("I like bananas.");
} else {
println!("I like other fruits.");
}
}
|
在 let
中使用 if
1
2
3
4
5
| fn main() {
let number = 6;
let result = if number % 2 == 0 { "even" } else { "odd" };
println!("Number is {}", result);
}
|
需要注意的是,if
表达式的值取决于执行哪个代码块。这意味着 if
的每个分支可能产生的值必须是相同的类型,如果类型不匹配,如下例所示,我们将收到错误
1
2
3
4
5
| fn main() {
let number = 10;
let result = if number % 2 == 0 { "even" } else { 5 };
println!("Result is {}", result);
}
|
循环重复
Rust 具有三种循环: loop
、while
和 for
loop 无限循环
使用 loop
关键字创建无限循环,它告诉 Rust 永远一遍又一遍地执行代码块,或者直到你明确告诉它停止为止
1
2
3
4
5
6
7
8
9
10
| fn main() {
let mut count = 0;
loop {
count += 1;
if count > 5 {
break;
}
println!("Count: {}", count);
}
}
|
break
允许从循环结果中返回值,传递到代码的其余部分
1
2
3
4
5
6
7
8
9
10
11
| fn main() {
let mut count = 0;
let result = loop {
count += 1;
if count > 5 {
break count * 2;
}
};
println!("Result: {}", result);
}
|
使用循环标签来中断外部循环
1
2
3
4
5
6
7
8
9
10
11
| fn main() {
'outer: loop {
println!("Entered outer loop");
'inner: loop {
println!("Entered inner loop");
break 'outer;
}
println!("This point will never be reached");
}
println!("Exited outer loop");
}
|
while 条件循环
程序通常需要评估循环内的条件。当条件为 true
时,循环运行。当条件不再为 true
时,程序将停止循环
1
2
3
4
5
6
7
8
| fn main() {
let mut count = 0;
while count < 5 {
count += 1;
println!("Count: {}", count);
}
println!("Done!");
}
|
for 遍历循环
for
循环用于遍历集合,例如数组、向量、范围等
1
2
3
4
5
6
7
| fn main() {
let fruits = ["apple", "banana", "cherry"];
for fruit in fruits {
println!("I like {}.", fruit);
}
}
|
for
循环也可以用于遍历数字范围
1
2
3
4
5
6
7
8
9
| fn main() {
for number in 1..6 { // 6 不会被取到
println!("Number: {}", number);
}
for number in 1..=6 { // 6 会被取到
println!("Number: {}", number);
}
}
|