स्काला 2.11.2 में, निम्न न्यूनतम उदाहरण केवल जब प्रकार जोड़ना का उपयोग कर Array[String]
पर संकलित:स्काला प्रकार निष्कर्ष: IndexedSeq [टी] सरणी से [टी] अनुमान नहीं लगा सकता
object Foo {
def fromList(list: List[String]): Foo = new Foo(list.toArray : Array[String])
}
class Foo(source: IndexedSeq[String])
हैं मैं fromList
में टाइप जोड़ना निकालते हैं तो वह निम्न त्रुटि के साथ संकलित करने के लिए असफल हो जायेगी:
Error:(48, 56) polymorphic expression cannot be instantiated to expected type;
found : [B >: String]Array[B]
required: IndexedSeq[String]
def fromList(list: List[String]): Foo = new Foo(list.toArray)
^
क्यों संकलक Array[String]
अनुमान नहीं लगा सकता यहाँ? या क्या इस मुद्दे को Array
से IndexedSeq
के अंतर्निहित रूपांतरण के साथ कुछ करना है?
नोट मुझे लगता है कि आप कर सकते हैं: 'आपत्ति फू {def fromList (सूची: सूची [स्ट्रिंग]): Foo = नए फू (list.toArray [स्ट्रिंग])} 'बदले में। – david
या बिल्कुल 'list.toIndexedSeq', ज़ाहिर है। सवाल अभी भी एक अच्छा है, यद्यपि। –
इसे इंगित करने के लिए धन्यवाद। इंडेक्सडस्क की बजाय 'ऐरे' के कारण मैं प्रदर्शन कारणों से पूरी तरह से हूं। मुझे फ़ंक्शन को प्रोफाइल करना पड़ा और पाया कि 'बहुत से छोटे उदाहरण बनाते समय वेक्टर का अधिक ओवरहेड लेना। – Chris