未来Any不符合Future E.

时间:2017-12-07 10:04:10

标签: scala future

尝试从方法返回结果时,我在Scala中遇到问题。

我正在使用Play 2.6和ReactiveMongo。

下图中的错误:

enter image description here

enter image description here

有人能提供一些线索吗?

2 个答案:

答案 0 :(得分:1)

Future.map方法正在接受函数来映射Future的结果,因此对于您的代码,它的映射{{1} } result结果,等于:

Future

如上面的代码所示,您尝试返回 result.map(writeResult: WriteResult => { case Success => entity case Failure(f) => f.printStackTrace() }) WriteResult,因此Unit结果类型为map,并返回Any类型。所以抛出类型不匹配编译错误。

实际上你需要的是:Future[Any]。并且您可以调用result.map(writeResult: WriteResult => entity)方法,如:

create

答案 1 :(得分:1)

我怀疑你真正想要的是Future.transform而不是map。像这样的东西

  val result: Future[WriteResult] = ??? 
  result.transform(_ => entity,
    e => {
      e.printStackTrace()
      e // or return here your custom wrapper exception
    })