8000 Merge pull request #174 from scalajp/ja/futures-fix2 · rssh/scala.github.com@1db9232 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1db9232

Browse files
committed
Merge pull request scala#174 from scalajp/ja/futures-fix2
[Japanese Translation] Minor updates on Futures writeup
2 parents 4a4b881 + 43e4f91 commit 1db9232

File tree

1 file changed

+4
-23
lines changed

1 file changed

+4
-23
lines changed

ja/overviews/core/futures.md

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,7 @@ Future 内の値が利用可能となることを必要とするため、Future
234234

235235
<li><code>onSuccess</code> や <code>onFailure</code> コールバックを登録することは <code>onComplete</code> と同じ意味論を持つ。ただし、クロージャがそれぞれ成功したか失敗した場合のみに呼ばれるという違いがある。</li>
236236

237-
<li>既に完了した Future にコールバックを登録することは (1 により) コールバックが eventually に実行されることとなる。
238-
さらに、このコールバックはそれを登録したスレッドの進行をキャンセルしなければ、同じスレッドで同期的に実行される可能性がある。</li>
237+
<li>既に完了した Future にコールバックを登録することは (1 により) コールバックが eventually に実行されることとなる。</li>
239238

240239
<li>Future に複数のコールバックが登録された場合は、それらが実行される順序は定義されない。それどころか、コールバックは並行に実行される可能性がある。しかし、<code>ExecutionContext</code> の実装によっては明確に定義された順序となる可能性もある。</li>
241240

@@ -421,25 +420,6 @@ Future は同じ `Throwable` とともに失敗する。
421420

422421
anyQuote onSuccess { println(_) }
423422

424-
`either` コンビネータはこの Futuere もしくは引数として渡された Future
425-
の結果を持つ新たな Future を作成する。これは結果が成功か失敗したかに関わらず先に完了した方の値が採用される。
426-
以下は先に返ってきた為替レートを表示する具体例だ:
427-
428-
val usdQuote = future {
429-
connection.getCurrentValue(USD)
430-
} map {
431-
usd => "値: " + usd + " USD"
432-
}
433-
val chfQuote = future {
434-
connection.getCurrentValue(CHF)
435-
} map {
436-
chf => "値: " + chf + "CHF"
437-
}
438-
439-
val anyQuote = usdQuote either chfQuote
440-
441-
anyQuote onSuccess { println(_) }
442-
443423
`andThen` コンビネータは副作用の目的のためだけに用いられる。
444424
これは、成功したか失敗したかに関わらず現在の Future と全く同一の結果を返す新たな Future を作成する。
445425
現在の Future が完了すると、`andThen` に渡された 8000 ロージャが呼び出され、新たな Future
@@ -570,6 +550,8 @@ Future が失敗した場合は、呼び出し元には Future が失敗した
570550
これらの例外は非同期計算を実行するスレッド内で再び投げられる。
571551
この理由は、通常クライアント側で処理されないクリティカルもしくは制御フロー関連の例外が伝搬することを回避し、同時に Future の計算が失敗したことをクライアントに通知するためだ。
572552

553+
より正確な意味論の説明は [`NonFatal`](http://www.scala-lang.org/api/current/index.html#scala.util.control.NonFatal$) を参照。
554+
573555
## Promise
574556

575557
これまでの所、`future` メソッドを用いた非同期計算により作成される `Future` オブジェクトのみをみてきた。
@@ -725,7 +707,7 @@ for library writers
725707
2. 時間の比較 (`<``<=``>`、および `>=`)。
726708
3. 算術演算 (`+``-``*``/`、および `unary_-`)。
727709
4. この時間 `this` と引数として渡された時間の間の最小値と最大値 (`min``max`)。
728-
5. 時間が有限かの検査 (`finite_?`)。
710+
5. 時間が有限かの検査 (`isFinite`)。
729711

730712
`Duration` は以下の方法で作成することができる:
731713

@@ -735,7 +717,6 @@ for library writers
735717

736718
`Duration``unapply` メソッドも提供するため、パータンマッチング構文の中から使うこともできる。以下に具体例をみる:
737719

738-
import scala.concurrent.Duration
739720
import scala.concurrent.duration._
740721
import java.util.concurrent.TimeUnit._
741722

0 commit comments

Comments
 (0)
0