任何编程语言都包含的一个必要部分就是改变控制流程,如if-else条件分支,for 、while循环等。
一、if-else
if-else表达式的构成方式为:以if关键字开头,后面跟上条件表达式,后续是结果语句块,最后是可选的else块。条件表达式的类型必须是bool。
if-else分支判断和其他语言类似,不同的是,Rust语言中的布尔判断条件不必使用小括号包裹(如果加上小括号,编译器反而会认为这是一个多余的小括号,给出警告),且每个条件后面都跟着一个代码块。if-else条件选择是一个表达式,并且所有分支都必须返回相同的类型。
在if语句中,后续的结果语句块要求一定要用大括号包起来,不能省略,以便明确指出该if语句块的作用范围。
if-else结构还可以当表达式使用。如果使用if-else作为表达式,那么一定要注意,if分支和else分支的类型必须一致,否则就不能构成一个合法的表达式,会出现编译错误。如果else分支省略掉了,那么编译器会认为else分支的类型默认为单元类型 ()。
以下是简单的代码样例
fn main() {
let n = 5;
if n < 0 {
print!("{} is negative", n);
} else if n > 0 {
print!("{} is positive", n);
} else {
print!("{} is zero", n);
}
// if-else作为表达式
let big_n = if n < 10 && n > -10 {
println!(", and is a small number, increase ten-fold");
10 * n // 末尾不要加分号
} else {
println!(", and is a big number, half the number");
n / 2 // 末尾不要加分号
}; // let绑定末尾需要有分号。
println!("{} -> {}", n, big_n);
}