全模式匹配添加数组

pull/1104/head
tsudzuki 2 years ago committed by GitHub
parent 2d17b02d5a
commit 3a95d4a55f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -97,7 +97,7 @@ Rust 知道 `'c'` 位于第一个模式的序列内,所以会打印出 `early
### 解构并分解值
也可以使用模式来解构结构体、枚举、元组和引用。
也可以使用模式来解构结构体、枚举、元组、数组和引用。
#### 解构结构体
@ -274,6 +274,37 @@ let ((feet, inches), Point {x, y}) = ((3, 10), Point { x: 3, y: -10 });
这种将复杂类型分解匹配的方式,可以让我们单独得到感兴趣的某个值。
#### 解构数组
对于数组,我们可以用类似元组的方式解构,分为两种情况:
定长数组
```rust
let arr: [u16; 2] = [114, 514];
let [x, y] = arr;
assert_eq!(x, 114);
assert_eq!(y, 514);
```
不定长数组
```rust
let arr: &[u16] = &[114, 514];
if let [x, ..] = arr {
assert_eq!(x, &114);
}
if let &[.., y] = arr {
assert_eq!(y, 514);
}
let arr: &[u16] = &[];
assert!(matches!(arr, [..]));
assert!(!matches!(arr, [x, ..]));
```
### 忽略模式中的值
有时忽略模式中的一些值是很有用的,比如在 `match` 中的最后一个分支使用 `_` 模式匹配所有剩余的值。 你也可以在另一个模式中使用 `_` 模式,使用一个以下划线开始的名称,或者使用 `..` 忽略所剩部分的值。

Loading…
Cancel
Save