2012-08-06 8 views
9
scala> val set = scala.collection.mutable.Set[(Int, Int)]() 
set: scala.collection.mutable.Set[(Int, Int)] = Set() 

scala> set += (3, 4) 
<console>:9: error: type mismatch; 
found : Int(3) 
required: (Int, Int) 
       set += (3, 4) 
       ^

scala> set += Tuple2(3, 4) 
res5: set.type = Set((3,4)) 

(3, 4) जोड़ना काम नहीं करता - क्यों?किसी सेट में टुपल जोड़ने से काम नहीं होता

आम तौर पर, (3, 4) भी दो तत्वों के साथ एक ट्यूपल का प्रतिनिधित्व करता है।

उत्तर

19

समस्या यह है कि यह Set में एक विधि +(elem1: A, elem2: A, elems: A+) की विशेषता है और संकलक इसके द्वारा उलझन में है। यह वास्तव में मानता है कि आप इस विधि का उपयोग 2 Int पैरामीटर के साथ करने के बजाय इसे टुपल के साथ उपयोग करने के बजाय करने की कोशिश करते हैं।

आप उपयोग कर सकते हैं बजाय: set += (3 -> 4) या set += ((3, 4))

+0

Arggh :) कोष्ठक का अर्थ और क्या है - पहला विकल्प में>? और दूसरे में वास्तव में दोगुना-अप ब्रैकेट क्या कह रहे हैं? –

+0

(ठीक है -> arrowAssoc है और एक tuple http://www.scala-lang.org/api/current/scala/Predef$$ArrowAssoc.html के रूप में व्यक्त किए गए दो तर्कों के बीच संबंध बनाता है) –

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