Rust中if并不复杂,但与传统系统语言相比,更像动态类型语言中的if。我们来介绍一下,让读者可以理解细微差异。
if是一种一般概念的具体形式:分支。这个名称来自树的分支:一个决策点,根据所做的选择,可以选择不同的路径。
就 if 而言,一个选择指出两条路:
let x = 5;
if x == 5 {
println!("x is five!");
}
如果改变x的值,这一行就不会输出。更具体来说,如果 if 后面的表达式求值为 true ,那这个代码块就会执行。如果是 false ,就不会执行。 如果想让在 false 的情况下执行点东西,那就使用 else :
let x = 5;
if x == 5 {
println!("x is five!");
} else {
println!("x is not five :(");
}
如果还有另外一种情况,则使用else if:
let x = 5;
if x == 5 {
println!("x is five!");
} else if x == 6 {
println!("x is six!");
} else {
println!("x is not five or six :(");
}
这是很标准的用法。不过,也可以这么做:
let x = 5;
let y = if x == 5 {
10
} else {
15
}; // y: i32
上面能够(可能也应该)写成这样:
let x = 5;
let y = if x == 5 { 10 } else { 15 }; // y: i32
这样是正确的是因为if是一个表达式。表达式的值是被选中的分支中最后表达式的值。 一个没有else的if始终会导致空值(())。