gpt4 book ai didi

斯卡拉: "required: scala.concurrent.Future[?]"

转载 作者:行者123 更新时间:2023-12-01 12:41:28 24 4
gpt4 key购买 nike

编辑

仍然没有找到解决方案,所以我最终创建了两个 someFuture 方法。一个返回 future ,一个不返回(让 otherFuture 编译)


我正在尝试返回 Future[Option[JsObject]] 但一直出现此错误:

required: scala.concurrent.Future[?]

我在做什么

def someFuture:Future[Option[JsObject]] =
Future {
Option(JsObject())
}

def otherFuture:Future[Option[JsObject]] =
Future {
Option(JsObject(
someFuture.flatMap(_.get)
))
}

// get error here
found : JsObject
[error] required: scala.concurrent.Future[?]

如何在不出错的情况下返回 JsObject?

最佳答案

问题是 someFuture.flatMap(_.get) 无法编译——你需要提供一个接受 JsObject 并返回 的函数Future[Whatever]someFuture 上使用 flatMap

你可能想要这样的东西:

def otherFuture: Future[Option[JsObject]] = someFuture.map { opt =>
Option(JsObject(opt.get))
}

不过,如果您只是像这样调用 .get 的话,实际上没有任何理由使用 Option,所以以下可能更好:

def otherFuture: Future[Option[JsObject]] = someFuture.map(_.map(JsObject(_)))

现在如果 future 满足一个非空选项,选项的内容将被包裹在另一层JsObject中,这似乎是你的目标?

请注意,如果您使用 Option 来表示失败,您可能需要考虑内置于 Future 中的失败处理。

关于斯卡拉: "required: scala.concurrent.Future[?]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com