同一父类的子类的 Scala 类型不匹配
Scala Type Mismatch For Subclasses of The Same Parent
UserGetResponse和GeneralResponse是BaseResponse的子class,如下:
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.")
}
}
其中 users 是另一个 class,其中定义了获取、插入等方法。我收到以下编译错误:
type mismatch;
[error] found : Unit
[error] required: package.name.BaseResponse
[error] }
我做错了什么?
Future
中的闭包没有 returning 任何东西,所以编译器推断它的 return 类型是 Unit
,并抱怨因为它应该是 BaseResponse
.
从函数开头删除 val response =
(或在结尾前添加 response
)应该可以修复它。
UserGetResponse和GeneralResponse是BaseResponse的子class,如下:
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.")
}
}
其中 users 是另一个 class,其中定义了获取、插入等方法。我收到以下编译错误:
type mismatch;
[error] found : Unit
[error] required: package.name.BaseResponse
[error] }
我做错了什么?
Future
中的闭包没有 returning 任何东西,所以编译器推断它的 return 类型是 Unit
,并抱怨因为它应该是 BaseResponse
.
从函数开头删除 val response =
(或在结尾前添加 response
)应该可以修复它。