Scala中的SynchronizedSet和set操作

时间:2011-12-12 13:53:05

标签: scala set hashset synchronized

在REPL中:

import collection.mutable.{ HashSet, SynchronizedSet }

var myPool = new HashSet[String] with SynchronizedSet[String]
myPool += "oh"
myPool += "yes"
myPool = myPool.tail

我得到了:

error: type mismatch;
 found   : scala.collection.mutable.HashSet[String]
 required: scala.collection.mutable.HashSet[String] with scala.collection.mutable.SynchronizedSet[String]
   myPool = myPool.tail
                   ^

我做错了什么?

1 个答案:

答案 0 :(得分:5)

正如消息所说的那样,myPool.tail的类型为HashSet[String],而您的变量MyPool已声明为HashSet[String] with SynchronizedSet[String]

您只需要声明要避免过于精确推断的类型。

var myPool : HashSet[String] = new HashSet[String] with SynchronizedSet[String]

请注意,在可变集上,tail是一项代价高昂的操作,并返回一个新的Set。那可能不是你想要的。 (此外,规范是关于哪个元素将被删除的静音)