跳转到内容

Rust 初学者指南/If 语句和布尔值

100% developed
来自维基教科书,开放的书籍,开放的世界

If 语句和布尔值

[编辑 | 编辑源代码]

一个基本的概念是,我们可能希望根据某些条件执行不同的操作。例如,我们可能希望将数字限制在某个阈值,比如 10。因此,如果数字大于 10,我们希望将其设置为 10。为了表达这一点,我们使用称为 if 语句的东西。if 语句使用称为布尔值的东西。布尔值要么为真,要么为假。在 Rust 中,它简化为“bool”以方便输入。例如

 fn main() {
     let number = 5;
     let is_six: bool = number == 6;
 }

这里我们使用 == 来检查左右两边的两个东西是否相等。如果相等,则变为真,否则变为假。由于 5 不等于 6,所以 is_six 将为假。除了 == 之外,还有其他被称为“运算符”的东西,因为它们对输入进行运算。最常见的运算符是 ==,用于比较两个东西是否相同;!=,用于比较两个东西是否不同;>,用于比较左侧的东西是否大于右侧的东西;>=,用于比较左侧的东西是否大于或等于右侧的东西;以及 < 和 <= 的反向比较。

我们在 if 语句中使用这些运算符,将一个布尔值放入 if 语句中,如果布尔值为真,我们将进入 if 语句的 {} 中,否则不进入。

 fn main() {
     let mut number = 5;
     let is_six: bool = number == 6;
     if is_six {
         number += 4;
     }
     println!("{}", number);
 }

因此,由于 is_six 为假,我们不会进入 if 大括号,打印出的数字将是 5。但是,如果我们将其更改为

 fn main() {
     let mut number = 5;
     let is_five: bool = number == 5;
     if is_five {
         number += 4;
     }
     println!("{}", number);
 }

由于数字等于 5,所以 is_five 为真,我们进入大括号,导致数字最终等于 9。这比较冗长,因此通常情况下布尔值不会放在变量中,而是直接放在 if 语句中,如下所示

 fn main() {
     let mut number = 5;
     if number == 5 {
         number += 4;
     }
     println!("{}", number);
 }

这写起来更快,更简洁,更容易在以后修改,因此通常更受青睐。

假设我们想在数字等于 6 时加 4,在数字不等于 6 时减 4。我们该怎么做呢?我们可以使用 != 不等于运算符进行第二个 if 语句,如下所示

 fn main() {
     let mut number = 5;
     if number == 6 {
         number += 4;
     }
     if number != 6 {
         number -= 4;
     }
     println!("{}", number);
 }

这将起作用,但它很长且读起来很别扭,也不便于更改。相反,我们使用 else 运算符

 fn main() {
     let mut number = 5;
     if number == 6 {
         number += 4;
     } else {
         number -= 4;
     }
     println!("{}", number);
 }

这里,由于数字不等于 6,我们进入 else 中,减去 4,所以数字等于 1。

我们还可以将 if 和 else 组合起来执行不同的操作:例如,假设我们想在数字小于 7 时加 4,在数字大于 9 时减 4,否则加 1。如果用单独的 if 语句来做,这将很尴尬,因为如果数字是 6,它小于 7,所以我们会加 4,使其成为 10,这意味着我们随后将减去 4,因为它大于 9。因此,使用 else 语句将每个部分划分为自己的代码块很方便。我们可以用以下方式实现这种行为

 fn main() {
     let mut number = 5;
     if number < 7 {
         number += 4;
     } else if number > 9 {
         number -= 4;
     } else {
         number += 1;
     }
     println!("{}", number);
 }

数字最终为 **9**。

让我们回到一开始将数字限制在 10 的示例。现在我们可以做到这一点,并且可以将其表示为一个函数。

 fn cap_at_10(input: i32) -> i32 {
     if input > 10 {
          return 10;
     } else {
          return input;
     }
 }

然后我们可以在 main() 中使用它,如下所示

 fn main() {
     let mut number = 8;
     number = cap_at_10(number);
     let mut number2 = 14;
     number2 = cap_at_10(number2);
     println!("{}", number);
     println!("{}", number2);
 }

这将打印出 8 和 10,因为 8 小于 10,所以我们进入 if 语句的 else {} 部分,所以只从函数返回 8。而对于 14,它大于 10,所以我们进入 if 语句的 if {} 部分,所以返回 10。

所有这些编程事物的一个关键点是它们非常简单。它们的强大之处在于将它们组合起来使用。从小事做起,大事成!

下一节:循环和迭代

华夏公益教科书