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 请勿混合使用不同类型
注意: 来自 if 和 else 分支的返回值必须是相同的类型,比如必须同为文本或同为数字(在上面的例子中,两者都是字符串)。
当您混合使用类型时,比如一个是字符串而另一个是整数,您将会遇到错误:
示例
let number = 5;
let result = if number < 10 { "Too small" } else { 100 };
println!("{}", result);结果:
error[E0308]: `if` and `else` have incompatible types