Rust 學習筆記:關于模式匹配的練習題
- Rust 學習筆記:關于模式匹配的練習題
- 問題一
- 問題二
- 問題三
Rust 學習筆記:關于模式匹配的練習題
參考視頻:
- https://www.bilibili.com/video/BV1YxojYJESm
問題一
以下代碼能否通過編譯?若能,輸出是?
fn main() {let mut v = vec![(1, 2), (3, 4)].into_iter();let mut sum = 0;while let Some(t) = v.next() {let (_, n) = t;sum += n;}println!("{}", sum);
}
答:可以通過編譯。輸出 6。
問題二
考慮對某種類型 T 的表達式進行模式匹配。以下哪一項最能準確描述可反駁模式(refutable pattern)和不可反駁模式(irrefutable pattern)之間的區別?
A. 可反駁模式是指當 T 是枚舉類型時的模式,而不可反駁模式是指當 T 不是枚舉類型時的模式。
B. 可反駁模式無法匹配任何 T 類型的值,而不可反駁模式能匹配 T 類型的一部分值。
C. 可反駁模式不能匹配某些 T 類型的值,而不可反駁模式能匹配所有 T 類型的值。
D. 可反駁模式匹配某種不同類型 S 的部分值,而不可反駁模式只能匹配 T 類型的值。
答:C。
問題三
考慮以下程序:
let x: &[(i32, i32)] = &[(0, 1)];
在這段代碼里,以下哪些是對變量 x 進行匹配時的可反駁模式?
A. &[..]
B. &[(x, y)]
C. &[(x, y), ..]
D. _
答:B、C。