From 7c397856c099f0edc3c62f78065930635f58b5e2 Mon Sep 17 00:00:00 2001 From: Allan Downey Date: Sun, 3 Apr 2022 10:25:26 +0800 Subject: [PATCH] Update: unified format --- src/basic/flow-control.md | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/basic/flow-control.md b/src/basic/flow-control.md index e5f24560..d17544bc 100644 --- a/src/basic/flow-control.md +++ b/src/basic/flow-control.md @@ -6,7 +6,7 @@ ## 使用 if 来做分支控制 -> if else 无处不在 - 鲁迅 +> if else 无处不在 -- 鲁迅 但凡你能找到一门编程语言没有 `if else`,那么一定更要反馈给鲁迅,反正不是我说的:) 总之,只要你拥有其它语言的编程经验,就一定会有以下认知:`if else` **表达式**根据条件执行不同的代码分支: @@ -56,7 +56,7 @@ error[E0308]: if and else have incompatible types found type `&str` ``` -#### 使用 else if 来处理多重条件 +## 使用 else if 来处理多重条件 可以将 `else if` 与 `if`、`else` 组合在一起实现更复杂的条件分支判断: @@ -82,20 +82,20 @@ fn main() { 如果代码中有大量的 `else if ` 会让代码变得极其丑陋,不过不用担心,下一章的 `match` 专门用以解决多分支模式匹配的问题。 -## 循环控制 +# 循环控制 循环无处不在,上到数钱,下到数年,你能想象的很多场景都存在循环,因此它也是流程控制中最重要的组成部分之一。 在 Rust 语言中有三种循环方式:`for`、`while` 和 `loop`,其中 `for` 循环是 Rust 循环王冠上的明珠。 -#### for 循环 +## for 循环 `for` 循环是 Rust 的大杀器: ```rust fn main() { for i in 1..=5 { - println!("{}",i); + println!("{}", i); } } ``` @@ -140,10 +140,10 @@ for item in &mut collection { ```rust fn main() { - let a = [4,3,2,1]; + let a = [4, 3, 2, 1]; // `.iter()` 方法把 `a` 数组变成一个迭代器 - for (i,v) in a.iter().enumerate() { - println!("第{}个元素是{}",i+1,v); + for (i, v) in a.iter().enumerate() { + println!("第{}个元素是{}", i + 1, v); } } ``` @@ -183,7 +183,7 @@ for item in collection { 由于 `for` 循环无需任何条件限制,也不需要通过索引来访问,因此是最安全也是最常用的,通过与下面的 `while` 的对比,我们能看到为什么 `for` 会更加安全。 -#### `continue` +## `continue` 使用 `continue` 可以跳过当前当次的循环,开始下次的循环: @@ -192,7 +192,7 @@ for item in collection { if i == 2 { continue; } - println!("{}",i); + println!("{}", i); } ``` @@ -203,7 +203,7 @@ for item in collection { 3 ``` -#### `break` +## `break` 使用 `break` 可以直接跳出当前整个循环: @@ -212,7 +212,7 @@ for item in collection { if i == 2 { break; } - println!("{}",i); + println!("{}", i); } ``` @@ -222,7 +222,7 @@ for item in collection { 1 ``` -#### while 循环 +## while 循环 如果你需要一个条件来循环,当该条件为 `true` 时,继续循环,条件为 `false`,跳出循环,那么 `while` 就非常适用: @@ -262,7 +262,7 @@ fn main() { if n > 5 { break } - println!("{}",n); + println!("{}", n); n+=1; } @@ -317,7 +317,7 @@ fn main() { 可以看出,`for` 并不会使用索引去访问数组,因此更安全也更简洁,同时避免 `运行时的边界检查`,性能更高。 -#### loop 循环 +## loop 循环 对于循环而言,`loop` 循环毋庸置疑,是适用面最高的,它可以适用于所有循环场景(虽然能用,但是在很多场景下, `for` 和 `while` 才是最优选择),因为 `loop` 就是一个简单的无限循环,你可以在内部实现逻辑通过 `break` 关键字来控制循环何时结束。 @@ -368,8 +368,6 @@ fn main() { - **break 可以单独使用,也可以带一个返回值**,有些类似 `return` - **loop 是一个表达式**,因此可以返回一个值 - ## 课后练习 > [Rust By Practice](https://zh.practice.rs/flow-control.html),支持代码在线编辑和运行,并提供详细的[习题解答](https://github.com/sunface/rust-by-practice)。 -