|
|
|
@ -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()?;`
|
|
|
|
|
|
|
|
|
|