在 Rust 中,if 表达式是一种控制流结构,用于基于条件执行代码。与许多其他语言不同,Rust 的 if
可以返回一个值,这使得它非常灵活和强大。
基本语法
Rust 的 if
表达式的基本语法是:if 条件 { 代码块 }。条件必须是布尔类型(bool),否则编译器会报错。下面的示例展示了如何使用
if 表达式检查一个数字是否为正数。
let number = 5;
if number > 0 {
println!("数字是正数");
}
注意:Rust 的条件不需要用括号括起来,但代码块必须用花括号
{} 包围。
使用 else 和 else if
你可以使用 else 和 else if
来处理多个条件;else if可以有多个,而else只能有一个。下面的示例演示了如何根据数字的正负或零来打印不同的消息。
let number = -3;
if number > 0 {
println!("正数");
} else if number < 0 {
println!("负数");
} else { // 所有条件不匹配时执行else分支
println!("零");
}
多个分支中最多只有一个会被执行,执行完一个分支后不会执行其他分支:
let x = 10;
if x > 5 {
println!("分支A"); // 执行这个
} else if x > 8 {
println!("分支B"); // ❌ 不会执行(条件虽为 true,但已被互斥)
} else {
println!("分支C"); // ❌ 不会执行
}
返回值的 if 表达式
Rust 的 if 表达式可以返回一个值,这允许你在赋值中使用它。每个分支必须返回相同类型的值。下面的示例展示了如何使用
if 表达式来分配一个字符串。
let condition = true;
let result = if condition {
"条件为真"
} else {
"条件为假"
};
println!("{}", result); // 输出: 条件为真
if作为表达式时,必须要有else分支。
注意:如果 if
表达式的分支返回不同类型,编译器会报错。例如,if true { 1 } else { "two" } 会导致类型不匹配错误。
嵌套 if 表达式
你可以在 if 表达式中嵌套其他 if
表达式,以处理更复杂的逻辑。下面的示例展示了如何检查一个数字是否在特定范围内。
let x = 10;
if x > 0 {
if x < 20 {
println!("x 在 0 和 20 之间");
}
}