Scala编译器错误:只有类可以声明但未定义的成员

时间:2013-07-23 16:02:31

标签: scala

下面的类会在此行val userList : List[User]处抛出编译器错误:

Multiple markers at this line
    - only classes can have declared but undefined members
    - only classes can have declared but undefined members

以下是整个代码:

class SimilarityData {

  case class User(id: String, jCoeff : Int) 

  def getUsers() =
  {    
    val userList : List[User]
    userList :+ new User("1" , 1);    
  }

}

导致此错误的原因是什么?

2 个答案:

答案 0 :(得分:4)

您必须为本地val提供初始值:

  

val userList = List(新用户(“1”,1))

错误提醒您:

  • val必须已分配初始值,在您的情况下,作为方法正文中的本地值。

  • 抽象类或特征上的val可能会被取消初始化 - 尽管它必须由沿线某处的(具体)子类初始化,

答案 1 :(得分:2)

首先userListval,这意味着您需要对其进行初始化。 其次userList的类型为List[String]。您无法向其添加User。这应该是这样的:

val userList = List.empty[User]
userList :+ new User("1" , 1);