Scala 为什么代码会失败,类型与不匹配,以便理解和将来使用?

Scala 为什么代码会失败,类型与不匹配,以便理解和将来使用?,scala,Scala,我有方法,但我不明白为什么我有类型不匹配错误。 这是我接近这个问题,但我不明白为什么 我只想创建一个新的列表(list[jsvalue],jsvalue) 这就是错误所在 Error:(41, 11) type mismatch; found : List[(List[play.api.libs.json.JsValue], play.api.libs.json.JsValue)] required: scala.concurrent.Future[?] a <- x.map

我有方法,但我不明白为什么我有类型不匹配错误。 这是我接近这个问题,但我不明白为什么

我只想创建一个新的列表(list[jsvalue],jsvalue)

这就是错误所在

Error:(41, 11) type mismatch;
 found   : List[(List[play.api.libs.json.JsValue], play.api.libs.json.JsValue)]
required: scala.concurrent.Future[?]
    a <- x.map(_._1)
      ^
错误:(41,11)类型不匹配;
找到:List[(List[play.api.libs.json.JsValue],play.api.libs.json.JsValue]
必需:scala.concurrent.Future[?]
a{
为了{

尝试
future.map
。使用
flatMap
时,
x=>…
函数必须返回
future
。是的,您(可能)想要
map
,而不是
flatMap
。另外,请注意(如果您进行了更改),函数的返回值将是
future[(List[List[JSValue]],List[JSValue])
,我怀疑这可能不是您真正想要的。我想摆脱未来…@MIkCode您只能使用阻塞操作来实现这一点;请参阅
wait.result
def test(future: Future[List[(List[JsValue], JsValue)]]) = {
  future.flatMap(x => {
    for {
      a <- x.map(_._1)
      b <- x.map(_._2)
    } yield (a, b)
  })