Future Any 不符合 Future E
Future Any does not conform with Future E
我在 Scala 中尝试 return 方法的结果时遇到问题。
我正在使用 Play 2.6 和 ReactiveMongo。
以下图片错误:
有人可以提供一些线索吗?
Future.map 方法接受 函数 来映射 Future
的结果,因此对于您的代码,它映射 result
' s Future
结果,等于:
result.map(writeResult: WriteResult => {
case Success => entity
case Failure(f) => f.printStackTrace()
})
如上面的代码,你试图returnWriteResult
和Unit
,所以map
结果类型是Any
,return Future[Any]
类型。所以抛出类型不匹配编译错误。
其实你需要的是:result.map(writeResult: WriteResult => entity)
。您可以调用 create
方法,例如:
val res = create(entity)
res.onComplete {
case Success(e) => println(e)
case Failure(f) => f.printStackTrace()
}
我怀疑你真正想要的是Future.transform
而不是map
。像这样
val result: Future[WriteResult] = ???
result.transform(_ => entity,
e => {
e.printStackTrace()
e // or return here your custom wrapper exception
})
我在 Scala 中尝试 return 方法的结果时遇到问题。
我正在使用 Play 2.6 和 ReactiveMongo。
以下图片错误:
有人可以提供一些线索吗?
Future.map 方法接受 函数 来映射 Future
的结果,因此对于您的代码,它映射 result
' s Future
结果,等于:
result.map(writeResult: WriteResult => {
case Success => entity
case Failure(f) => f.printStackTrace()
})
如上面的代码,你试图returnWriteResult
和Unit
,所以map
结果类型是Any
,return Future[Any]
类型。所以抛出类型不匹配编译错误。
其实你需要的是:result.map(writeResult: WriteResult => entity)
。您可以调用 create
方法,例如:
val res = create(entity)
res.onComplete {
case Success(e) => println(e)
case Failure(f) => f.printStackTrace()
}
我怀疑你真正想要的是Future.transform
而不是map
。像这样
val result: Future[WriteResult] = ???
result.transform(_ => entity,
e => {
e.printStackTrace()
e // or return here your custom wrapper exception
})