Rust 程式設計視訊教程(進階)——023 模式的 refutability 和 irrefutable

linghuyichong發表於2020-02-17

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

github地址:https://github.com/anonymousGiga/learn_rus...

1、模式有兩種:refutable(可反駁的)和 irrefutable(不可反駁的)。能匹配任何傳遞的可能值的模式被稱為是不可反駁的。對值進行匹配可能會失敗的模式被稱為可反駁的。

2、只能接受不可反駁模式的有:函式、let語句、for迴圈。原因:因為通過不匹配的值程式無法進行有意義的工作。

3、if let和while let表示式被限制為只能接受可反駁的模式,因為它們的定義就是為了處理有可能失敗的條件。

4、例子:

let a: Option<i32> = Some(5);
let Some(x) = some_option_value; //失敗,因為let是不可反駁的,
                                 //要匹配傳遞的所有的值,這裡無法匹配None的情況

if let x = 5 { //錯誤,if let接受可反駁的
    println!("x = {}", x);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章