2016-03-14 7 views
0

UserGetResponse и GeneralResponse являются sublclasses из BaseResponse, которая выглядит следующим образом:Scala Тип Несовпадение Для подклассов одного Родитель

abstract class BaseResponse() 

И функция я использую для извлечения пользователей выглядит следующим образом:

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.") 
    } 
    } 

, где пользователи - это еще один класс с определенными методами получения, вставки и т. Д. Я получаю следующую ошибку компиляции:

type mismatch; 
[error] found : Unit 
[error] required: package.name.BaseResponse 
[error] } 

Что я делаю неправильно?

ответ

5

Закрытие внутри Future ничего не возвращает, поэтому компилятор сообщает, что его тип возврата Unit, и жалуется, что он должен быть BaseResponse.

Снятие val response = с начала функции (или добавление response до конца) должно быть исправлено.

+1

Да, или просто поместите 'response' в конце функции – andyczerwonka