2012-08-06 59 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 :)什麼是括號的意義和 - 在第一個選項>?而第二個括號中實際上說的是什麼? – 2018-01-30 11:37:47

+0

(好吧 - >是arrowAssoc並在兩個參數之間形成一個關係,表示爲一個元組http://www.scala-lang.org/api/current/scala/Predef$$ArrowAssoc.html) – 2018-01-30 13:48:14