Coursera इसे जारी रखते हुए स्काला पाठ्यक्रम, मार्टिन ओडर्स्की एक उदाहरण कोड है जो है पता चला:मैप ऑपरेशन के बाद एक रेंज को वेक्टर में क्यों बदल दिया गया है?
1 to 5 map (i => i*i)
और उन्होंने कहा Range
क्योंकि वे एक ही इंटरफ़ेस (IndexedSeq
) का हिस्सा एक Vector
में तब्दील हो जाता है और परिणाम प्रदर्शित नहीं किया जा सकता है Range
के रूप में (यह इसके उदाहरण में अधिक स्पष्ट था क्योंकि उसने एक जोड़ी उत्पन्न की जो Range
के रूप में प्रतिनिधित्व योग्य नहीं है)।
मुझे समझ में नहीं आ रहा है क्योंकि मुझे लगता है कि उसने पहले कहा था कि अभिव्यक्ति के लिए पहला जनरेटर इस तरह के तत्व को निर्धारित करेगा, जो कम से कम Range
के लिए हमेशा सत्य नहीं लगता है।
और मैं क्यों उत्पादन Vector
है, क्योंकि Vector
केवल एक दूसरे कार्यान्वयन कि परिणाम से ऊपर अभिकलन प्रतिनिधित्व कर सकते हैं नहीं हो सकता है समझने के लिए यकीन नहीं है।
क्या कोई मुझे इस भाग को समझने में मदद कर सकता है?
तो क्या आपका मतलब है कि स्कैला डिफ़ॉल्ट रूप से कुछ अंतर्निहित CanBuildFroms द्वारा आयात करता है और मैं अंततः उन्हें या कुछ ओवरराइड कर सकता हूं? क्या यह संभव है, समझने के लिए, इस मामले में एक वेक्टर की तुलना में कुछ और उत्पादन करने के लिए? –
@ सेबेस्टियन लॉर्बर - वास्तव में आप कर सकते हैं! 'ब्रेकऑट' की तलाश करें शायद इसे करने का सबसे सुविधाजनक तरीका अगर कुछ अन्य निहित पहले से लागू हो सकते हैं, उदा। http://stackoverflow.com/questions/2592024 –
हां, यदि आप स्पष्ट रूप से एक वैध निर्माता प्रदान करते हैं तो आप – Arjan