Redian新闻
>
Rust 基础系列 #6: 条件语句 | Linux 中国

Rust 基础系列 #6: 条件语句 | Linux 中国

科技
 
导读:在这篇文章中,我们将学习使用条件语句来管理 Rust 程序的控制流。                     
本文字数:3804,阅读时长大约:5分钟

在 上一篇文章 中,你学习了函数。在这篇文章中,我们将学习使用条件语句来管理 Rust 程序的控制流。

什么是条件语句?

在编写代码的时候,最常见的任务之一就是检查某些条件是否为 true 或 false。“如果温度高于 35°C,打开空调。”

通过使用 if 和 else 这样的关键字(有时候结合使用),程序员可以根据条件(例如提供的参数数量、从命令行传递的选项、文件名、错误发生等)改变程序的行为。

所以,对一个程序员来说,了解任何语言的控制流都是至关重要的,更不用说 Rust 了。

条件运算符

下表列出了所有常用的单个条件运算符:

< 如显示不全,请左右滑动 >
运算符示例解释
>a > ba 大于 b
<a < ba 小于 b
==a == ba 等于 b
!=a != ba 不等于 b
>=a >= ba 大于 或 等于 b
<=a <= ba 小于 或 等于 b

以及下表是逻辑运算符,它们用于一个或多个条件之间:

< 如显示不全,请左右滑动 >
运算符示例解释
|| (逻辑或)条件1 || 条件2条件1 或 条件2 中至少有一个为 true
&& (逻辑与)条件1 && 条件2所有 条件都为 true
! (逻辑非)!条件条件 的布尔值的相反值

📋 与数学相似,你可以使用圆括号来指定操作的优先级。

使用 if else

要控制 Rust 代码的基本流程,使用两个关键字:if 和 else。这可以根据提供的条件的状态创建两个“执行路径”。

一个简单的带有替代执行路径的 if 块的语法如下:

  1. if 条件 {
  2. <语句>;
  3. } else {
  4. <语句>;
  5. }

📋 当只有一个条件时,将其括在圆括号中并不是强制性的。根据语法,使用圆括号是可选的。你仍然应该使用它们来指定优先级并优化可读性。

来看看一个例子。

  1. fn main() {
  2. let a = 36;
  3. let b = 25;
  4. if a > b {
  5. println!("a 大于 b");
  6. } else {
  7. println!("b 大于 a");
  8. }
  9. }

这里,我声明了两个整数变量 a 和 b,它们的值分别为 '36' 和 '25'。在第 5 行,我检查变量 a 中存储的值是否大于变量 b 中存储的值。如果条件计算结果为 true,则会执行第 6 行的代码。如果条件计算结果为 false,由于我们有一个 else 块(可选),第 8 行的代码将被执行。

来看看程序的输出。

  1. a 大于 b

完美!

来修改一下变量 a 的值,使其小于变量 b 的值,看看会发生什么。我将把 a 的值改为 '10'。修改后的输出如下:

  1. b 大于 a

但是,如果我将相同的值存储在变量 a 和 b 中呢?为了看到这一点,我将两个变量的值都设置为 '40'。修改后的输出如下:

  1. b 大于 a

嗯?从逻辑上讲,这没有任何意义... :frowning:

但是这可以改进!我们继续。

使用 else if 条件

与其他任何编程语言一样,你可以使用 else if 块来提供多于两个的执行路径。语法如下:

  1. if 条件 {
  2. <语句>;
  3. } else if 条件 {
  4. <语句>;
  5. } else {
  6. <语句>;
  7. }

现在,通过使用 else if 块,我可以改进程序的逻辑。下面是修改后的程序。

  1. fn main() {
  2. let a = 40;
  3. let b = 40;
  4. if a == b {
  5. println!("a 与 b 是相等的");
  6. } else if a > b {
  7. println!("a 大于 b");
  8. } else {
  9. println!("b 大于 a");
  10. }
  11. }

现在,我的程序的逻辑是正确的。它已经处理了所有的边缘情况(我能想到的)。第 5 行处理了 a 等于 b 的情况。第 7 行处理了 a 可能大于 b 的情况。而 a 小于 b 的情况则由第 9 行的 else 块隐式处理。

现在,当我运行这段代码时,我得到了以下输出:

  1. a b 是相等的

现在这就完美了!

示例:找到最大值

我知道使用 if 和 else 很容易,但是让我们再看一个程序。这次,我们来比较三个数字。我还将在这个实例中使用逻辑运算符!

  1. fn main() {
  2. let a = 73;
  3. let b = 56;
  4. let c = 15;
  5. if (a != b) && (a != c) && (b != c) {
  6. if (a > b) && (a > c) {
  7. println!("a 是最大的");
  8. } else if (b > a) && (b > c) {
  9. println!("b 是最大的");
  10. } else {
  11. println!("c 是最大的");
  12. }
  13. }
  14. }

这个程序第一眼看上去可能很复杂,但是不要害怕,我会解释的!

最开始,我声明了三个变量 ab 和 c,并赋予了我能想到的随机值。然后,在第 6 行,我检查了没有变量的值与其他变量相同的条件。首先,我检查 a 和 b 的值,然后是 a 和 c,最后是 b 和 c。这样我就可以确定没有变量中存储了重复的值。

然后,在第 7 行,我检查了变量 a 中存储的值是否是最大的。如果这个条件计算结果为 true,则会执行第 8 行的代码。否则,将检查第 9 行的执行路径。

在第 9 行,我检查了变量 b 中存储的值是否是最大的。如果这个条件计算结果为 true,则会执行第 10 行的代码。如果这个条件也是 false,那么只有一种可能。3 个变量中的最大值既不是 a 也不是 b

所以,自然地,在 else 块中,我打印出变量 c 拥有最大值。

来看看程序的输出:

  1. a 是最大的

这是预期的结果。尝试修改分配给每个变量的值,并自己测试一下! :smiley:

总结

你学习到了如何使用 if 和 else 语句。在你继续使用大量 if else if 语句制作自己的 AI 之前(哈哈),让我们在本系列的下一篇文章中学习 Rust 中的循环。

持续关注。

(题图:MJ/3eea3bbb-b630-4470-ae21-391ab86cd5bf)


via: https://itsfoss.com/rust-if-else/

作者:Pratham Patel 选题:lkxed 译者:Cubik65536 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :Qian Qian \"Cubik\"‎
🌟🌟🌟
翻译: 19.0 篇
|
贡献: 250 天
2022-10-04
2023-06-10
https://linux.cn/lctt/Cubik65536
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Agustín Hernández:中美洲建筑背景下的未来主义巨构Rust 基础系列 #5: Rust 中的函数 | Linux 中国Alpine Linux 3.18 发布 | Linux 中国Bash 基础知识系列 #6:处理字符串操作 | Linux 中国大家最喜欢的 Linux 终端字体 | Linux 中国Next.js + Rust 革新全栈开发,Rust没那么难如何在 Linux 系统中使用 Ventoy 创建多重引导的 U 盘 | Linux 中国如何在 Linux 中合并 PDF 文件 | Linux 中国终端基础:在 Linux 中删除文件和文件夹 | Linux 中国Bash 基础知识系列 #1:创建并运行你的第一个 Bash Shell 脚本 | Linux 中国Rust 基础系列 #7: 在 Rust 中使用循环 | Linux 中国放养使用 ChatGPT AI 从英文文本生成 Linux 命令 | Linux 中国Bash 基础知识系列 #3:传递参数和接受用户输入 | Linux 中国Rust 基础系列 #4: Rust 中的数组和元组 | Linux 中国Bash 基础知识系列 #5:在 Bash 中使用数组 | Linux 中国Rust 社区管理再起“内讧”:RustConf 粗暴撤换主讲人事态升级引发多人出走终端基础:在 Linux 中复制文件和目录 | Linux 中国回国机票攻略Rust 基础系列 #2: 在 Rust 程序中使用变量和常量 | Linux 中国结合使用 Python 和 Rust | Linux 中国不该走的人正被逼走,RustConf粗暴撤换主讲人事态升级引发多人出走,根源出在Rust领导小组不愿交权?在 Linux 上用 Kdenlive 编辑视频 | Linux 中国如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国Rust 基础系列 #8:编写里程碑 Rust 程序 | Linux 中国7 个超轻量级 Linux 发行版 | Linux 中国将 sudo 和 su 移植到 Rust,Rust 要重写万物?颠覆概念 - 批判“批判性思维”需要那么多村官?Voyager Linux 23.04:具有华丽外观且无 Snap 的 Ubuntu 体验 | Linux 中国女儿劝父母离婚TUXEDO Stellaris 16(Gen5)是目前所能找到的终极 Linux 笔记本电脑 | Linux 中国将 Linux 终端与 Nautilus 文件管理器结合起来 | Linux 中国Rust 基础系列 #3: Rust 中的数据类型 | Linux 中国Arch Linux 的最佳 GUI 包管理器 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。