1、模式有兩種:refutable(可反駁的)和 irrefutable(不可反駁的)。能匹配任何傳遞的可能值的模式被稱爲是不可反駁的。對值進行匹配可能會失敗的模式被稱爲可反駁的。
2、只能接受不可反駁模式的有:函數、let語句、for循環。原因:因爲通過不匹配的值程序無法進行有意義的工作。
3、if let和while let表達式被限制爲只能接受可反駁的模式,因爲它們的定義就是爲了處理有可能失敗的條件。
例子:
fn main() {
// let a: Option<i32> = Some(5); //匹配Some(value), None
// let b: Option<i32> = None; //匹配Some(value), None
// let Some(x) = a;
// if let Some(v) = a {
if let v = 5 {
println!("v {}", v);
}
}
本節全部源代碼:
https://github.com/anonymousGiga/learn_rust/blob/master/learn_pattern1/src/main.rs