第三节、控制语句
条件判断 if
根据条件决定要执行的语句块
let number = 3;
if number < 5 { //3是小于5的,所以就会走这条语句
println!("condition was true");
} else { //否则 ,也是是>=5,大于等于5的时候,本例子不走这条语句
println!("condition was false");
}
非布尔型不能直接判断
let number = 3;
if number { //这句会报错,number是 int类型。
println!("number was three");
}
if else if
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");
}
通过 if 做表达式赋值
let condition = true;
let number = if condition { 5 } else { 6 };
println!("The value of number is: {}", number);
fn main() {
let condition = true;
let number = if condition { 5 } else { "six" };
println!("The value of number is: {}", number);
}
循环语句
loop,while,for
fn main() {
loop {
println!("again!");
}
}
again!
again!
again!
again!
.......
如何终止循环?
let mut remaining = 10;
loop {
println!("remaining = {}", remaining);
if remaining == 9 {
break;
}
remaining -= 1;
}
remaining = 10
remaining = 9
双层循环,通过标签做终止
let mut count = 0;
'counting_up: loop { //大循环
println!("count = {}", count);
let mut remaining = 10;
loop { //小循环
println!("remaining = {}", remaining);
if remaining == 9 {
break; //默认终止最近的循环,也就是小循环
}
if count == 2 {
break 'counting_up; //终止 大循环。
}
remaining -= 1;
}
count += 1;
}
println!("End count = {}", count);
上面例子有2个循环,为了方便我标注了大循环和小循环。
小循环的终止直接是break,大循环的终止需要一个标识,这样程序就知道break的是那个循环。
循环的返回值
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {}", result);
while 循环
fn main() {
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
println!("LIFTOFF!!!");
}
for 循环
let a = [10, 20, 30, 40, 50];
for element in a {
println!("the value is: {}", element);
}
//反转
for number in (1..4).rev() {
println!("{}!", number);
}
println!("LIFTOFF!!!");
the value is: 10
the value is: 20
the value is: 30
the value is: 40
the value is: 50
3!
2!
1!
LIFTOFF!!!