编译器说我没有为Set指定类型(类型不匹配)

时间:2012-10-04 19:51:20

标签: scala scala-collections

我是scala学习集合的新学习者。我想将我的参数添加到集合中,然后从函数中返回它。

def singleElementSet(elem: Int): Set ={
    var newSet = Set()
    newSet+= elem
  }

我尝试了这个,但它给了我错误,如:

type Set takes type parameters
- type Set takes type parameters

对于elem

type mismatch;  found   : elem.type (with underlying type Int)  required: Nothing

2 个答案:

答案 0 :(得分:3)

您必须通过示例中的Set [Int]定义Set中的内容。创建新集时,您必须指定它的类型:

val newSet = Set.empty[Int]

或初始化Set with something:

val newSet = Set(1)

但是,你可能要么使用var OR一个可变的Set来完成很多工作。例如,您的代码应如下所示:

var newSet = Set.empty[Int]
def singleElementSet(elem: Int): Set[Int] = {
    newSet+= elem
}

(每次调用方法时都无法将Set定义为空集,或者结果不会加起来)

答案 1 :(得分:2)

我认为你想要的是

def singleElementSet(elem: Int): Set[Int] = {
    val newSet = Set.empty[Int]
    newSet + elem
}

或者您可以直接创建该集

def singleElementSet(elem: Int) = Set(elem)