क्या scala.util चेन करना संभव है। कोशिश करें और scala.concurrent.Future? वे दोनों प्रभावी ढंग से एक ही मोनैडिक इंटरफेस प्रदान करते हैं, लेकिन उन्हें चेन करने का प्रयास संकलन त्रुटि में परिणाम देता है।स्कैला - चेनिंग वायदा ब्लॉक का प्रयास करें?
उदाहरण के लिए। नीचे
def someFuture:Future[String] = ???
def processResult(value:String):Try[String] = ???
दो हस्ताक्षरों को देखते हुए यह है संभव निम्नलिखित की तरह कुछ करने के लिए?
val result = for(a <- someFuture; b <- processResult(a)) yield b;
result.map { /* Success Block */ } recover { /* Failure Block */ }
यह स्पष्ट रूप से एक संकलन त्रुटि में परिणाम देता है, क्योंकि भविष्य और प्रयास फ्लैट होने में असमर्थ हैं।
हालांकि यह श्रृंखला बनाने में सक्षम होने के लिए यह एक अच्छी सुविधा होगी - क्या यह संभव है? या क्या मुझे उन्हें भविष्य में संयोजित करने की ज़रूरत है [कोशिश करें [स्ट्रिंग]]?
(विशेष रूप से, मुझे भविष्य में या प्रयास में अपवादों को पकड़ने के लिए एकल 'पुनर्प्राप्ति' ब्लॉक रखने में दिलचस्पी है)।
वर्तमान में है एक [चर्चा स्कैला-उपयोगकर्ता पर] (https://groups.google.com/d/topic/scala-user/Mu4_lZAWxz0/चर्चा) 'प्रयास' को 'भविष्य' में परिवर्तित करने की इस सटीक समस्या के बारे में। शायद इस तरह एक सहायक मानक मानक पुस्तकालय में कहीं भी शामिल किया जाना चाहिए। – gourlaysama
भविष्य। फ्रॉम? –
@ViktorKlang, हाँ आप सही हैं। मैंने उस दृष्टिकोण को शामिल करने के लिए अपना उत्तर अपडेट किया। सर उठाने के लिए धन्यवाद। – cmbaxter