2013-05-17 6 views
6

नहीं कहा जा सकता है मैंने देखा है कि ready और resultscala.concurrent.Future के तरीकों को सीधे नहीं बुलाया जा सकता है। जब मैं उन्हें आरपीएल में बुलाता हूं तो मुझे एक त्रुटि मिलती है। इस प्रकार मुझे इसके बजाय Await.ready और Await.result पर कॉल करना होगा।स्काला में भविष्य के तैयार और परिणाम के तरीके सीधे

यह ठीक है लेकिन थोड़ा अजीब लग रहा है। तो अब मुझे आश्चर्य है:

  • उन्हें सीधे क्यों नहीं बुलाया जा सकता है;
  • क्यों वे उस मामले में सार्वजनिक एपीआई के रूप में उजागर किए जाते हैं।

उत्तर

4

कारणों का पता रखी हैं in official doc:

भविष्य विशेषता() पद्धतियों विधि के साथ Awaitable विशेषता तैयार है और परिणाम को लागू करता है()। इन विधियों को सीधे क्लाइंट द्वारा नहीं कहा जा सकता है- उन्हें केवल निष्पादन संदर्भ द्वारा ही बुलाया जा सकता है।

इस तरह पुस्तकालय डिजाइनरों आप (स्पष्ट रूप से संचालन अवरुद्ध निरूपित करने के लिए निष्पादन संदर्भ, शायद तृतीय पक्ष, या Awaitable वस्तु के माध्यम से) उचित माहौल में उन तरीकों का उपयोग करने के लिए लागू होता है।

+3

ठीक है। हो सकता है कि मुझे इसे समझने के लिए एक उदाहरण की आवश्यकता हो ... वैसे भी, क्या यह अंतिम तरीकों से इन तरीकों का पर्दाफाश करने के लिए खराब पुस्तकालय डिज़ाइन की तरह नहीं दिखता है? – Michael

+1

उन्हें कस्टम प्रतीक्षा करने योग्य बनाने के लिए सार्वजनिक होना है। – drexin

संबंधित मुद्दे