我有一个Scala类:
class Example {
def fooBar() : String = {
// do some stuff
var whistles = new HashSet[String]()
fizzBuzz(whistles)
// do some more stuff
}
def fizzBuzz(whistles : Set[String]) : Unit = {
// do some stuff down here
}
}
当我调用fizzBuzz
方法(来自fooBar
内部)时,这给了我编译器错误,说明:
类型不匹配; found:需要java.util.HashSet [String]:设置[String]
我在这里缺少什么?! HashSet
实施Set
,我最后一次检查...
答案 0 :(得分:6)
您将java.util.HashSet[A]
(HashSet
的java版本)与scala.collection.immutable.Set[A]
混合在一起。您想要scala.collection.immutable.HashSet[A]
代替:
val whistles = scala.collection.immutable.HashSet[String]()
fizzBuzz(whistles)
答案 1 :(得分:-2)
Scala有很好的集合实现。它有两种集合。
可变收集(读写)
<强> scala.collection.mutable。* 强>
不可变集合(只读)
<强> scala.collection.immutable。* 强>
你不应该混淆两种变体。
可变
val immutableHashSet = scala.collection.immutable.HashSet[String]("Name", "Age", "Address")
immutableHashSet.foreach { println }
<强>不可变强>
{{1}}