流控制是所有程序语言的共性,有点语言基础一看就懂。我不说,上代码:
/// 控制执行流的结构是 if 表达式 和循环。
/// Rust 有三种循环: loop 、 while 和 for
#[test]
fn control_if() {
let number = true; //3 如果改成数字,将出错
//Rust 并不会尝试自动地将非布尔值转换为布尔值。
//必须总是显式地使用布尔值作为 if 的条件
if number {
println!("number was three");
}
}
/// 如果有很多else if 就换match 比较简洁吧
///
#[test]
fn control_elseif() {
let number = 6;
if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}
///在 let 语句中使用 if
/// 训练:
/// 将下代码中的6 换成字串,如"six" 试试,编译不通过
/// 将下面的 5 换成 panic!("error") 能通过,想想为什么
///
#[test]
fn control_letif() {
let condition = true;
let number = if condition { 5 } else { 6 };
println!("control_letif - The value of number is: {}", number);
}
#[test]
pub fn control_loop() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {}", result);
}
#[test]
fn control_while() {
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
println!("BOMB!!!");
}
#[test]
fn control_for() {
let a = [10, 20, 30, 40, 50, 60]; // _代表不指定数组长度,自己猜去
for element in a.iter() {
println!("the value is: {}", element);
}
//再来一粟子: x..y 代表 [x,y) x..=y 代表 [x,y]
for number in (1..4).rev() {
//rev()是颠倒的意思,试试在4前面加=号
println!("{}!", number);
}
println!("BOMB!!!");
}