Skip to content

Commit

Permalink
Merge pull request #172 from kdnakt/translate-question_mark
Browse files Browse the repository at this point in the history
Translate untranslated lines in question_mark.md
  • Loading branch information
dalance authored Sep 25, 2023
2 parents 5e49aad + 75f5ac6 commit 851792a
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/std/result/question_mark.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
# `?`

<!--
Chaining results using match can get pretty untidy; luckily, the `?` operator
can be used to make things pretty again. `?` is used at the end of an expression
returning a `Result`, and is equivalent to a match expression, where the
`Err(err)` branch expands to an early `return Err(From::from(err))`, and the `Ok(ok)`
branch expands to an `ok` expression.
-->
マッチを利用して結果をチェインするのは中々面倒です。
幸いなことに、`?`マクロを使用すればイケてるコードに戻すことができます。
`?``Result`を返す式の末尾で使います。
`Err(err)`の分岐が`return Err(From::from(err))`という早期リターンに展開され、
`Ok(ok)`の分岐が`ok`の式に展開されるようなマッチ式と等価です。

```rust,editable,ignore,mdbook-runnable
mod checked {
Expand Down Expand Up @@ -42,11 +49,14 @@ mod checked {
}
// Intermediate function
// 中間関数
fn op_(x: f64, y: f64) -> MathResult {
// if `div` "fails", then `DivisionByZero` will be `return`ed
// `div`が"失敗"したら、`DivisionByZero`が`return`される。
let ratio = div(x, y)?;
// if `ln` "fails", then `NonPositiveLogarithm` will be `return`ed
// もし`ln`が"失敗"したら、`NonPositiveLogarithm`が`return`される。
let ln = ln(ratio)?;
sqrt(ln)
Expand All @@ -72,7 +82,11 @@ fn main() {
}
```

<!--
Be sure to check the [documentation][docs],
as there are many methods to map/compose `Result`.
-->
[公式ドキュメント][docs]をチェックすることをオススメします。
`Result`型を扱う関数や`Result`型のメソッドが多く挙げられています。

[docs]: https://doc.rust-lang.org/std/result/index.html

0 comments on commit 851792a

Please sign in to comment.