2013-05-17 5 views
6

Zauważyłem, że metody ready i result z scala.concurrent.Future nie mogą być wywołane bezpośrednio. Kiedy wywołuję je w REPL, pojawia się błąd. Dlatego muszę zadzwonić pod numer Await.ready i Await.result.Metody gotowe i wynik Future w Scali nie mogą być wywołane bezpośrednio

Jest OK, ale wygląda trochę niezręcznie. Więc teraz zastanawiam się:

  • dlaczego nie można ich wywołać bezpośrednio;
  • , dlaczego są w takim przypadku narażone na publiczny interfejs API.

Odpowiedz

4

Powody są określone in official doc:

Future cecha realizuje Awaitable cechę metodą metody gotowości() i wyniki(). Te metody nie mogą być wywołane bezpośrednio przez klientów - mogą być wywoływane tylko przez kontekst wykonania.

ten sposób projektanci biblioteczne wymusić korzystanie z tych metod w odpowiednim środowisku (kontekst wykonanie, firm może trzeci lub przez Awaitable obiektu do określenia operacji blokowania jawnie).

+3

Ok. Może potrzebuję przykładu, aby to zrozumieć ... W każdym razie, czy nie wygląda to na kiepski projekt biblioteki, aby ujawnić te metody użytkownikowi końcowemu? – Michael

+1

Muszą być publicznie dostępne, aby możliwe było niestandardowe oczekiwanie. – drexin

Powiązane problemy