2012-08-06 9 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)は、2つの要素を持つタプルも表します。

答えて

19

問題はSet特性にあるメソッド+(elem1: A, elem2: A, elems: A+)に存在し、コンパイラがそれを混乱させることです。実際には、このメソッドを2つのIntパラメータを使用して、タプルとともに使用するのではなく、期待どおりに使用すると考えています。

代わりに使用することができます:set += (3 -> 4)またはset += ((3, 4))

+0

をArggh :)括弧の意味は何だと - >最初のオプションでは?二番目に倍増した括弧は実際に何を言っていますか? –

+0

(Ok so - >はarrowAssocであり、タプルとして表現される2つの引数の間の関係を形成します。http://www.scala-lang.org/api/current/scala/Predef$$ArrowAssoc.html) –

関連する問題