Scala 为什么代码会失败,类型与不匹配,以便理解和将来使用?
我有方法,但我不明白为什么我有类型不匹配错误。 这是我接近这个问题,但我不明白为什么 我只想创建一个新的列表(list[jsvalue],jsvalue) 这就是错误所在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
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)
})