rust_logo.jpg
我們之前學習 Vector 和 Hashmap 中一些獲取值的方法返回值并非想要的值拱礁,而是 Some 類型的值,我們通過 Some 對值進行包裹塌衰,將包裹的值可能為空處理交給了使用方來處理豌注。
fn main(){
let s = Some('c');
match s {
Some(i) => println!("{}",i),
_ => {},
}
}
通過 Some 方法創(chuàng)建 Some 類型的 s,然后通過 match 方法來進行處理
if let Some(i) = s{
println!("{}",i);
}else {
{}
}
其實也可以用這種形式對 Some 進行解構獲取值矩欠。
let mut s = Some(0);
loop {
match s {
Some(i) => if i > 19 {
println!("Quit");
s = None;
}else {
println!("{}",i);
s = Some(i + 2);
},
_ => {
break;
},
}
}
0
2
4
6
8
10
12
14
16
18
Quit
簡單地分析一下财剖,Some(0) 進入循環(huán)悠夯,我們跳出循環(huán)條件 break 是 match s 返回值為 None 時候,那么 s 什么時候為 None 呢應該當 s 的包裹值大于 19 時候為 None 就退出了循環(huán)躺坟。不然就對 s 進行重新賦值沦补,每次都是將其包裹值 + 2 再付給他∵涑龋可能下面這種方式比較好理解一些夕膀。
while let Some(i) = s {
if i > 19 {
println!("Quit");
s = None;
}else {
println!("{}", i);
s = Some(i + 2);
}
}