「Rust」4 流程控制与模式匹配
if - else
if 语句块可以是表达式
let number = if condition {
5
} else {
6
};
println!("The value of number is: {}", number);
循环控制
for 循环
for i in &set {
//do something
}
使用for时我们经常使用集合的 引用形式,未实现copy特征的数据类型,其所有权会被 move 到
for
语句中。
想要在循环中,进行元素的修改,需要使用mut
关键字
- 获取值和索引
fn main() {
let a = [4,3,2,1];
// `.iter()` 方法把 `a` 数组变成一个迭代器
for (i,v) in a.iter().enumerate() {
println!("第{}个元素是{}",i+1,v);
}
}
while 循环
与
for
相比,可能出现索引长度而导致的越界问题
loop 循环
需要通过break
关键字来跳出循环,break
可以带一个返回值。
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;//返回值
}
};
println!("The result is {}", result);
}
match 和 if let
enum Direction {
East,
West,
North,
South,
}
fn main() {
let dire = Direction::South;
match dire {
Direction::East => println!("East"),
Direction::North | Direction::South => {
println!("South or North");
},
_ => println!("West"),
};
}
match
的匹配要穷举出所有可能,使用_
表示default