
在 上一篇文章 中,你学习了函数。在这篇文章中,我们将学习使用条件语句来管理 Rust 程序的控制流。
什么是条件语句?
在编写代码的时候,最常见的任务之一就是检查某些条件是否为 true 或 false。“如果温度高于 35°C,打开空调。”
通过使用 if 和 else 这样的关键字(有时候结合使用),程序员可以根据条件(例如提供的参数数量、从命令行传递的选项、文件名、错误发生等)改变程序的行为。
所以,对一个程序员来说,了解任何语言的控制流都是至关重要的,更不用说 Rust 了。
条件运算符
下表列出了所有常用的单个条件运算符:
以及下表是逻辑运算符,它们用于一个或多个条件之间:
? 与数学相似,你可以使用圆括号来指定操作的优先级。
使用 if else
要控制 Rust 代码的基本流程,使用两个关键字:
if和else。这可以根据提供的条件的状态创建两个“执行路径”。一个简单的带有替代执行路径的 if 块的语法如下:
if 条件 { <语句>; } else { <语句>; }? 当只有一个条件时,将其括在圆括号中并不是强制性的。根据语法,使用圆括号是可选的。你仍然应该使用它们来指定优先级并优化可读性。
来看看一个例子。
fn main() { let a = 36; let b = 25; if a > b { println!("a 大于 b"); } else { println!("b 大于 a"); } }这里,我声明了两个整数变量
a和b,它们的值分别为 '36' 和 '25'。在第 5 行,我检查变量a中存储的值是否大于变量b中存储的值。如果条件计算结果为true,则会执行第 6 行的代码。如果条件计算结果为false,由于我们有一个else块(可选),第 8 行的代码将被执行。来看看程序的输出。
a 大于 b完美!
来修改一下变量
a的值,使其小于变量b的值,看看会发生什么。我将把a的值改为 '10'。修改后的输出如下:b 大于 a但是,如果我将相同的值存储在变量
a和b中呢?为了看到这一点,我将两个变量的值都设置为 '40'。修改后的输出如下:b 大于 a嗯?从逻辑上讲,这没有任何意义... :frowning:
但是这可以改进!我们继续。
使用 else if 条件
与其他任何编程语言一样,你可以使用
else if块来提供多于两个的执行路径。语法如下:if 条件 { <语句>; } else if 条件 { <语句>; } else { <语句>; }现在,通过使用
else if块,我可以改进程序的逻辑。下面是修改后的程序。fn main() { let a = 40; let b = 40; if a == b { println!("a 与 b 是相等的"); } else if a > b { println!("a 大于 b"); } else { println!("b 大于 a"); } }现在,我的程序的逻辑是正确的。它已经处理了所有的边缘情况(我能想到的)。第 5 行处理了
a等于b的情况。第 7 行处理了a可能大于b的情况。而a小于b的情况则由第 9 行的else块隐式处理。现在,当我运行这段代码时,我得到了以下输出:
a 与 b 是相等的现在这就完美了!
示例:找到最大值
我知道使用
if和else很容易,但是让我们再看一个程序。这次,我们来比较三个数字。我还将在这个实例中使用逻辑运算符!fn main() { let a = 73; let b = 56; let c = 15; if (a != b) && (a != c) && (b != c) { if (a > b) && (a > c) { println!("a 是最大的"); } else if (b > a) && (b > c) { println!("b 是最大的"); } else { println!("c 是最大的"); } } }这个程序第一眼看上去可能很复杂,但是不要害怕,我会解释的!
最开始,我声明了三个变量
a、b和c,并赋予了我能想到的随机值。然后,在第 6 行,我检查了没有变量的值与其他变量相同的条件。首先,我检查a和b的值,然后是a和c,最后是b和c。这样我就可以确定没有变量中存储了重复的值。然后,在第 7 行,我检查了变量
a中存储的值是否是最大的。如果这个条件计算结果为true,则会执行第 8 行的代码。否则,将检查第 9 行的执行路径。在第 9 行,我检查了变量
b中存储的值是否是最大的。如果这个条件计算结果为true,则会执行第 10 行的代码。如果这个条件也是false,那么只有一种可能。3 个变量中的最大值既不是a也不是b。所以,自然地,在
else块中,我打印出变量c拥有最大值。来看看程序的输出:
a 是最大的这是预期的结果。尝试修改分配给每个变量的值,并自己测试一下! :smiley:
总结
你学习到了如何使用
if和else语句。在你继续使用大量ifelse if语句制作自己的 AI 之前(哈哈),让我们在本系列的下一篇文章中学习 Rust 中的循环。持续关注。
(题图:MJ/3eea3bbb-b630-4470-ae21-391ab86cd5bf)