期货顺序/两者中的结果不正确

时间:2018-09-23 15:38:35

标签: scala

给出下面结合期货序列的代码,或者我总是打印“不好”,为什么结果是列表?

def future1 (i: Int) = Future { if (i==0) Right(1) else Left("error 1") }
def future2 (i: Int) = Future { if (i==0) Right(2) else Left("error 2") }

...
...

val f1 = future1(0)
val f2 = future2(0)
val f3 = Future.sequence(Seq(f1, f2))

f3.map { result =>
    result match {
      case List(r) => println("ok")
      case _ => println("not OK)
    }
}

1 个答案:

答案 0 :(得分:3)

case List(r)仅将一个元素与一个列表匹配,然后将其绑定到r。 要检查结果是否为List类型的实例,请使用

f3.map { result =>
  result match {
    case r: List[_] => println("ok")
    case _ => println("not OK)
  }
}