Update option.md

pull/184/head
Jesse 3 years ago committed by GitHub
parent 3420343efe
commit a7b6a8f658
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,6 +1,6 @@
# 解构Option # 解构Option
在枚举那章,提到过`Option`枚举, 它用来解决Rust中变量是否有值的问题定义如下: 在枚举那章,提到过`Option`枚举它用来解决Rust中变量是否有值的问题定义如下
```rust ```rust
enum Option<T> { enum Option<T> {
Some(T), Some(T),
@ -11,7 +11,7 @@ enum Option<T> {
那么现在的问题就是该如何去使用这个`Option`枚举类型,根据我们上一节的经验,可以通过`match`来实现。 那么现在的问题就是该如何去使用这个`Option`枚举类型,根据我们上一节的经验,可以通过`match`来实现。
> 因为`Option`,`Some``None`都包含在`prelude`中,因此你可以直接通过名称来使用它们,而无需以`Option::Some`这种形式去使用,总之,千万不要因为形式变短了,而忘记`Some`和`None`也是`Option`底下的枚举成员! > 因为`Option``Some``None`都包含在`prelude`中,因此你可以直接通过名称来使用它们,而无需以`Option::Some`这种形式去使用,总之,千万不要因为形式变短了(这里不太懂想表达什么),而忘记`Some`和`None`也是`Option`底下的枚举成员!
## 匹配 `Option<T>` ## 匹配 `Option<T>`
@ -30,10 +30,10 @@ let six = plus_one(five);
let none = plus_one(None); let none = plus_one(None);
``` ```
`plus_one`接受一个`Option<i32>`类型的参数,同时返回一个`Option<i32>`类型的值(这种形式的函数在标准库内随处所见),在该函数的内部处理中,如果传入的是一个`None`,则返回一个`None`不做任何处理;如果传入的是一个`Some(i32)`,则通过模式绑定,把其中的值绑定到变量`i`上,然后返回`i+1`的值,同时用`Some`进行包裹。 `plus_one`接受一个`Option<i32>`类型的参数,同时返回一个`Option<i32>`类型的值(这种形式的函数在标准库内随处所见),在该函数的内部处理中,如果传入的是一个`None`,则返回一个`None`不做任何处理;如果传入的是一个`Some(i32)`,则通过模式绑定,把其中的值绑定到变量`i`上,然后返回`i+1`的值,同时用`Some`进行包裹。
为了进一步说明,假设`plus_one`函数接受的参数值x是`Some(5)` 来看看具体的分支匹配情况: 为了进一步说明,假设`plus_one`函数接受的参数值x是`Some(5)`来看看具体的分支匹配情况:
#### 传入参数`Some(5)` #### 传入参数`Some(5)`
```rust,ignore ```rust,ignore

Loading…
Cancel
Save