Rust 简明教程

Rust If .. Else 条件语句

1. 条件与 If..Else

您已经知道 Rust 支持数学中常见的比较条件,例如:

  • 小于:a < b
  • 小于或等于:a <= b
  • 大于:a > b
  • 大于或等于:a >= b
  • 等于:a == b
  • 不等于:a != b

您可以利用这些条件来针对不同的决策执行不同的操作。

Rust 具备以下条件语句:

  • 使用 if 来指定一段代码,只有当特定条件为 true 时才会执行。
  • 使用 else 来指定一段代码,如果相同的条件为 false 则执行该代码。
  • 使用 else if 来指定一个新的测试条件,如果第一个条件为 false 时进行测试。
  • 使用 match 来指定执行许多备选的代码块。

注意: 与许多其他编程语言不同,在 Rust 中,if..else 既可以作为语句使用,也可以作为表达式(用于将值分配给变量)使用。请参阅页面底部的示例,以更好地理解这一点。

2. if

使用 if 来指定一个代码块,当条件为 true 时执行。

示例

if 7 > 5 {
  println!("7 is greater than 5.");
}

您也可以对变量进行测试:

示例

let x = 7;
let y = 5;

if x > y {
  println!("x is greater than y.");
}

3. if...else

如果条件不为 true,您可以使用 else 来运行不同的代码:

示例

let age = 16;

if age >= 18 {
  println!("You can vote.");
} else {
  println!("You are too young to vote.");
}

4. else if

您可以使用 else if 来检查多个条件:

示例

let score = 85;

if score >= 90 {
  println!("Grade: A");
} else if score >= 80 {
  println!("Grade: B");
} else if score >= 70 {
  println!("Grade: C");
} else {
  println!("Grade: F");
}

5. 将 if 作为表达式使用

在 Rust 中,if...else 也可以被用作一个表达式。

这意味着您可以将 if 返回的结果分配给一个变量:

示例

let time = 20;

let greeting = if time < 18 {
  "Good day."
} else {
  "Good evening."
};

println!("{}", greeting);

当您将 if 作为表达式使用时,必须包含 else 分支。这是为了确保无论条件如何,表达式始终都会返回一个值。

5.1 简化的语法

如果每个代码块只包含一个单独的表达式,您可以将其简写在一行内:

示例

let time = 20;
let greeting = if time < 18 { "Good day." } else { "Good evening." };

println!("{}", greeting);

提示: 这种用法的效果类似于 Java 或 C 等语言中的三元运算符(condition ? value1 : value2)。尽管 Rust 本身并没有三元运算符,但将 if...else 作为表达式使用也能达到同样的效果。

5.2 请勿混合使用不同类型

注意: 来自 ifelse 分支的返回值必须是相同的类型,比如必须同为文本或同为数字(在上面的例子中,两者都是字符串)。

当您混合使用类型时,比如一个是字符串而另一个是整数,您将会遇到错误:

示例

let number = 5;
let result = if number < 10 { "Too small" } else { 100 };

println!("{}", result);

结果:

error[E0308]: `if` and `else` have incompatible types