किसी सूची के मामले में, एक प्रकार की घोषणा के बिना, स्कैला सभी तत्वों को देखता है और सामान्य प्रकार खोजने की कोशिश करता है। आपके मामले में, चूंकि इंट को डबल में परिवर्तित किया जा सकता है, इसलिए यह आपकी मिश्रित सूची को एक सूची [डबल] में परिवर्तित करता है जो आपके एक इंटेल को बढ़ावा देता है।
मानचित्र निर्माता 2-टुपल्स की एक श्रृंखला लेता है। तुम्हें पता है, समान व्यवहार प्राप्त करता है, तो आप सिर्फ tuples की एक सूची का निर्माण किया जाएगा:
scala> List((1, "one"), (2.0, "two.oh"))
res0: List[(AnyVal, String)] = List((1,one), (2.0,two.oh))
Tuple2 [इंट, स्ट्रिंग] स्वचालित रूप से Tuple2 [डबल, स्ट्रिंग] करने के लिए प्रोत्साहित नहीं किया जा सकता। इस मामले में, आप एक प्रकार घोषणा के साथ एक सा बाहर संकलक मदद करने के लिए की आवश्यकता होगी:
scala> val x: List[(Double, String)] = List((1, "one"), (2.0, "two.oh"))
x: List[(Double, String)] = List((1.0,one), (2.0,two.oh))
या
scala> val x = List[(Double, String)]((1, "one"), (2.0, "two.oh"))
x: List[(Double, String)] = List((1.0,one), (2.0,two.oh))
या अपने मामले में:
scala> val x = List[(Double, String)]((1, "one"), (2.0, "two.oh")).toMap
x: scala.collection.immutable.Map[Double,String] = Map(1.0 -> one, 2.0 -> two.oh)
किसी कारण से , मानचित्र पर प्रकार की घोषणा का उपयोग कर काम नहीं करता है। सुनिश्चित नहीं हैं कि क्यों:
scala> val x = Map[Double, String](1 -> "one", 2.0 -> "two.oh")
<console>:7: error: type mismatch;
found : (Int, String)
required: (Double, String)
val x = Map[Double, String](1 -> "one", 2.0 -> "two.oh")
reproducable 2.9.2 के साथ-साथ। –