Rust学习 (六) 分支循环
2020-09-16 本文已影响0人
Gascognya
if 表达式
{
println!("number was three");
}
if number {
println!("number was three");
}
请问上面两者有何区别?
第一个是我们之前说的代码块。第二个是我们熟知的if语句。
仔细一看,两者貌似只差别在一个条件判定。真值才会执行。
实际上,就是如此。if 表达式,说明if也是一种表达式。可以具有返回值。
let number = if condition {
5
};
那么这样的语句是否可以呢?
答对了一半,这样的逻辑是对的,但是忽略了一点。if条件如果不被执行,那么let number =
就会出现错误,rust是一门十分严谨的语言,这样危险的错误是不可以的。为了无论如何,number都可以被赋一个值。我们需要加上else。
let number = if condition {
5
} else {
6
};
这样是被允许的,这和python中的if else简化形式含义相同
number = 5 if condition else 6
并且要注意,rust中的if表达式,if和else的返回值类型要相同,不然显而易见也会出现错误。
loop 表达式
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
loop表达式是一种无限循环,直到发生错误或者break。
因为是表达式,所以也可以有返回值,其返回值是break语句后的内容。
while 循环
while循环
let mut number = 3;
while number != 0 {
println!("{}!", number);
number = number - 1;
};
在while中是不能用break来返回一些值的,所有while true最好都替换成loop,两者在编译时有本质区别。
for 循环
let num_arry = [10, 20, 30, 40, 50];
for num in num_arry.iter() {
println!("{}!", num)
}
for i in 1..5 {
println!("{}!", i)
}
for ... in ...这么方便的功能自然是少不了的