2013-05-17 25 views
6

Tôi nhận thấy rằng phương thức readyresult của scala.concurrent.Future không thể được gọi trực tiếp. Khi tôi gọi cho họ trong REPL, tôi gặp lỗi. Do đó, tôi phải gọi số Await.readyAwait.result.Phương pháp sẵn sàng và kết quả của Tương lai trong Scala không thể được gọi trực tiếp

Ok nhưng có vẻ hơi khó xử. Vì vậy, bây giờ tôi tự hỏi:

  • lý do tại sao chúng không thể được gọi trực tiếp;
  • lý do tại sao chúng được hiển thị dưới dạng API công khai trong trường hợp đó.

Trả lời

4

Những lý do được đặt ra in official doc:

Các đặc điểm tương lai thực hiện các đặc điểm Awaitable với phương pháp phương pháp sẵn sàng() và kết quả(). Các phương thức này không thể được gọi trực tiếp bởi các máy khách - chúng chỉ có thể được gọi bằng ngữ cảnh thực thi.

Bằng cách đó các nhà thiết kế thư viện thực thi bạn sử dụng các phương pháp đó trong môi trường thích hợp (bối cảnh thực hiện, bên thứ ba có lẽ, hoặc thông qua đối tượng Awaitable để biểu thị chặn hoạt động rõ ràng).

+3

Ok. Có lẽ tôi cần một ví dụ để hiểu nó ... Dù sao, nó không giống như một thiết kế thư viện nghèo để lộ những phương pháp này cho người dùng cuối? – Michael

+1

Họ phải được công khai để làm cho tùy chỉnh awaitables có thể. – drexin

Các vấn đề liên quan