diff --git a/src/programming_concepts/control_flow.md b/src/programming_concepts/control_flow.md index 8f56399..582e853 100644 --- a/src/programming_concepts/control_flow.md +++ b/src/programming_concepts/control_flow.md @@ -58,7 +58,7 @@ $ cargo run 条件为假 ``` -还值得注意的是,这段代码中的条件 *必须* 要个 `bool` 值。当条件不是个 `bool` 值时,我们将得到一个报错。例如,请尝试运行以下代码: +还值得注意的是,这段代码中的条件 *必须* 是个 `bool` 值。当条件不是个 `bool` 值时,我们将得到一个报错。例如,请尝试运行以下代码: 文件名:`src/main.rs` @@ -245,7 +245,7 @@ fn main() { ``` -当我们运行这个程序时,我们将看到 `again!` 被不断打印,直到我们手动停止程序为止。大多数终端都支持 `crtl-C` 中断某个陷入连续循环程序。尝试一下: +当我们运行这个程序时,我们将看到 `again!` 被不断打印,直到我们手动停止程序为止。大多数终端都支持 `ctrl-C` 中断某个陷入连续循环程序。尝试一下: ```console @@ -280,7 +280,7 @@ again! > ``` -幸运的是,Rust 也提供了使用代码跳出循环的方法。咱们可放置 `break` 关键字在循环中,告诉程序何时停止执行循环。回想一下,我们在第 2 章 的 [猜对后退出](../Ch02_Programming_a_Guessing_Game.md#猜对后的退出) 小节的猜数游戏中的猜数游戏中就这样做了,当用户猜对数字赢得游戏时退出程序。 +幸运的是,Rust 也提供了使用代码跳出循环的方法。咱们可放置 `break` 关键字在循环中,告诉程序何时停止执行循环。回想一下,我们在第 2 章 的 [猜对后退出](../Ch02_Programming_a_Guessing_Game.md#猜对后的退出) 小节的猜数游戏中就这样做了,当用户猜对数字赢得游戏时退出程序。 在猜数游戏中我们还使用了 `continue`,其在循环中会告诉程序,跳过循环的本次迭代中任何剩余代码,而前往下一次迭代。 @@ -308,7 +308,7 @@ fn main() { 在其中的循环前,我们声明一个名为 `counter` 的变量并初始化其为 `0`。 然后,咱们声明一个名为 `result` 的变量保存从该循环返回的值。在该循环的每一次迭代时,我们都给 `counter` 变量加 `1`,然后检查 `counter` 是否等于 `10`。当等于 `10` 时,我们使用带有 `counter * 2` 值的 `break` 关键字。在这个循环之后,我们使用分号结束指派该值到 `result` 的语句。最后,我们打印 `result` 中的值,在本例中为 `20`。 -我们还可在循环内 `return`。`break` 只会退出当前循环,而 `return` 则始终会推出当前函数。 +我们还可在循环内 `return`。`break` 只会退出当前循环,而 `return` 则始终会退出当前函数。 > **译注**:这个示例还可写作如下。 @@ -337,7 +337,7 @@ fn main() { ### 以循环标签消除歧义 -当咱们有着循环内的循环(译注:嵌套循环)时,`break` 和 `continue` 就会应用于该处的最内层循环。咱们可选择在某个循环上指定一个 *循环标签,loop lable*,随后咱们可与 `break` 或 `continue` 一起使用,指定这两个关键字会应用到某个带标签的循环,而不是最内层循环。循环标签必须以单引号开头。下面是两个嵌套循环下的一个示例: +当咱们有着循环内的循环(译注:嵌套循环)时,`break` 和 `continue` 就会应用于该处的最内层循环。咱们可选择在某个循环上指定一个 *循环标签,loop label*,随后咱们可与 `break` 或 `continue` 一起使用,指定这两个关键字会应用到某个带标签的循环,而不是最内层循环。循环标签必须以单引号开头。下面是两个嵌套循环下的一个示例: ```rust @@ -367,7 +367,7 @@ fn main() { ``` -其中外层循环有着标签 `'counting_up`,他将从 `0` 计数到 `2`。不带标签的内存循环会从 `10` 倒计数到 `9`。未指定标签的第一个 `break`,将只退出内层循环。那个 `break 'counting_up;` 语句将退出外层循环。这段代码会打印: +其中外层循环有着标签 `'counting_up`,他将从 `0` 计数到 `2`。不带标签的内层循环会从 `10` 倒计数到 `9`。未指定标签的第一个 `break`,将只退出内层循环。那个 `break 'counting_up;` 语句将退出外层循环。这段代码会打印: ```console @@ -480,7 +480,7 @@ fn main() { 当咱们运行这段代码时,我们将看到与清单 3-4 同样的输出。更重要的是,我们现在提高了代码的安全性,并消除了超出数组末尾,或因遍历不足远而遗漏某些项目等可能导致的 bug 的可能性。自 `for` 循环生成的机器码也会更加高效,因为索引不需要在每次迭代时都与数组长度比较。 -使用 `for` 循环时,当咱们修改了数组中值的个数时,咱们将不需要向使用 [清单 3-4](#listing_3-4) 中用到的方法中那样,记住修改任何其他代码。 +使用 `for` 循环时,当咱们修改了数组中值的个数时,咱们将不需要像使用 [清单 3-4](#listing_3-4) 中用到的方法中那样,记住修改任何其他代码。 `for` 循环的安全性和简洁性,使其成为 Rust 中最常用到的循环结构。即使是在咱们打算运行某些代码一定次数的情形下,如清单 3-3 中使用 `while` 循环的倒计时示例中,大多数 Rustaceans 也会使用 `for` 循环。实现这点的方法,是使用由标准库提供的 `Range`,他会按顺序生成从一个数字开始到另一个数字前结束的所有数字。 @@ -507,7 +507,7 @@ fn main() { 咱们做到了!这是蔚为壮观的一章:咱们学习了变量、标量与复合数据类型、函数、注释、`if` 表达式和循环!要练习这一章中讨论的概念,请尝试构建程序完成以下操作: - 转换华氏和摄氏之间的温度; -- 生成第 n 个斐波拉基数; +- 生成第 n 个斐波那契数; - 利用圣诞颂歌 “The Twelve Days of Christmas” 中的重复,而打印出其歌词; @@ -518,7 +518,7 @@ fn main() {
- “法式温度与摄氏温度的转换” + “华氏温度与摄氏温度的转换” ```rust use std::io; @@ -533,11 +533,11 @@ fn cels_to_fah(c: f32) -> f32 { } fn main() { - println! ("法式温度与摄氏温度之间的转换"); + println! ("华氏温度与摄氏温度之间的转换"); loop { println! ("\n-----------------\n请选择: - '1'-摄氏温度/'2'-法式温度/'Q'/\"quit\" 退出程序。 + '1'-摄氏温度/'2'-华氏温度/'Q'/\"quit\" 退出程序。 '1'/'2'/'Q'/\"quit\"[1]:"); let mut temp_type = String::new(); @@ -559,14 +559,14 @@ fn main() { println! ("请输入要转换的摄氏温度:"); let temp = get_temp_input(); - println! ("摄氏温度: {:.2}°C,约为法氏温度:{:.2}°F", temp, cels_to_fah(temp)); + println! ("摄氏温度: {:.2}°C,约为华氏温度:{:.2}°F", temp, cels_to_fah(temp)); } if temp_type.eq("2") { - println! ("请输入要转换的法氏温度:"); + println! ("请输入要转换的华氏温度:"); let temp = get_temp_input(); - println! ("法氏温度:{:.2}°F,约为摄氏温度:{:.2}°C", temp, fah_to_cels(temp)); + println! ("华氏温度:{:.2}°F,约为摄氏温度:{:.2}°C", temp, fah_to_cels(temp)); } } } @@ -594,7 +594,7 @@ fn get_temp_input() -> f32 {
- "生成第 n 个斐波拉基数" + "生成第 n 个斐波那契数" ```rust @@ -612,7 +612,7 @@ fn nth_fibonacci(n: u64) -> u64 { } fn main() { - println! ("找出第 n 个斐波拉基数"); + println! ("找出第 n 个斐波那契数"); 'main_loop: loop { println! ("请输入 n: (Q/quit 退出程序)"); @@ -640,7 +640,7 @@ fn main() { }; }; - println! ("第 {} 个斐波拉基数为:{}", + println! ("第 {} 个斐波那契数为:{}", n, nth_fibonacci(n).to_formatted_string(&Locale::en)); } @@ -664,7 +664,7 @@ fn main() { "sixth", "seventh", "eighth", - "nineth", + "ninth", "tenth", "eleventh", "twelfth"