Scala类型不匹配同一父节点的子类

Has*_*ral 0 scala spray apache-spark

UserGetResponse和GeneralResponse是BaseResponse的子类,如下所示:

abstract class BaseResponse()
Run Code Online (Sandbox Code Playgroud)

我用来检索用户的函数如下:

  def userGet(userId: Int)(implicit ec: ExecutionContext): Future[BaseResponse] = Future {
    val response = users.get(userId) map { user =>
        val userRes = new UserResponse(user.id, user.firstname, user.lastname, user.organisationid, user.email, user.password, user.usertype)
        new UserGetResponse(1, "Successful retrieved the user.", userRes)
    } getOrElse {
      GeneralResponse(0, s"Error retrieving user. User does not exist.")
    }
  }
Run Code Online (Sandbox Code Playgroud)

其中users是另一个定义了get,insert等方法的类.我收到以下编译错误:

 type mismatch;
[error]  found   : Unit
[error]  required: package.name.BaseResponse
[error]   }
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Dim*_*ima 5

内部的闭包Future没有返回任何东西,因此编译器推断它的返回类型是Unit,并且抱怨因为它应该是BaseResponse.

val response =从函数的开头删除(或response在结束之前添加)应该修复它.