Merge pull request #252 from JesseAtSZ/patch-14

Update result.md
pull/262/head
Sunface 3 years ago committed by GitHub
commit 9d4a12047d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -246,7 +246,7 @@ fn read_username_from_file() -> Result<String, io::Error> {
从文件读取数据到字符串中,是比较常见的操作,因此 Rust 标准库为我们提供了 `fs::read_to_string` 函数,该函数内部会打开一个文件、创建 `String`、读取文件内容最后写入字符串并返回,因为该函数其实与本章讲的内容关系不大,因此放在最后来讲,其实只是我想震你们一下 :)
#### ?用于Option的返回
#### ? 用于Option的返回
`?` 不仅仅可以用于 `Result` 的传播,还能用于 `Option` 的传播,再来回忆下 `Option` 的定义:
```rust
pub enum Option<T> {
@ -285,7 +285,7 @@ fn first(arr: &[i32]) -> Option<&i32> {
arr.get(0)?
}
```
这段代码无法通过编译,切记:`?` 操作符需要一个变量来承载正确的值,只有错误值能直接返回,正确的值不行。因此 `?` 只能用于以下形式:
这段代码无法通过编译,切记:`?` 操作符需要一个变量来承载正确的值,这个函数只会返回 `Some(&i32)` 或者 `None`只有错误值能直接返回,正确的值不行,所以如果数组中存在 0 号元素,那么函数第二行使用 `?` 后的返回类型为 `&i32` 而不是 `Some(&i32)`。因此 `?` 只能用于以下形式:
- `let v = xxx()?;`
- `xxx()?.yyy()?;`

Loading…
Cancel
Save