2013-05-17 10 views
6

readyresultscala.concurrent.Futureのメソッドを直接呼び出すことができません。私はREPLでそれらを呼び出すときにエラーが発生します。だから私は代わりにAwait.readyAwait.resultに電話しなければならない。ScalaのFutureのreadyとresultの結果を直接呼び出すことはできません

これは大丈夫ですが、ちょっと面倒です。だから今私は疑問に思う:

  • なぜ彼らは直接呼び出すことはできません。その場合に公開APIとして公開されるのはなぜですか?

答えて

4

理由はin official docをレイアウトする:

将来形質がAwaitable方法方法に形質 レディ()と結果()を実装します。これらのメソッドは、 クライアントから直接呼び出すことはできません。実行コンテキストによってのみ呼び出すことができます。

そのようにライブラリの設計者は、あなたが(明示的に操作を遮断示すために実行コンテキスト、おそらく第三者、またはAwaitableオブジェクトを経由して)適切な環境でこれらのメソッドを使用することを強制します。

+3

たぶん、それを理解するための例が必要です...とにかく、エンドユーザーにこれらのメソッドを公開するのは貧弱なライブラリデザインのようには見えませんか? – Michael

+1

カスタムオーダーメイドを可能にするためには公開する必要があります。 – drexin

関連する問題