Scala 从Future获取Int值的优雅方式[Option[Int]]
是否有一种更优雅的方法从Scala 从Future获取Int值的优雅方式[Option[Int]],scala,Scala,是否有一种更优雅的方法从Future[Option[Int]]获取Int值,而不是使用finalFuture.value.get.get.get 这就是我到目前为止所做的: val finalFuture: Future[Option[Int]] = result.contents finalFuture.onComplete { case Success(value) => println(s"Got the callback with value
Future[Option[Int]]
获取Int
值,而不是使用finalFuture.value.get.get.get
这就是我到目前为止所做的:
val finalFuture: Future[Option[Int]] = result.contents
finalFuture.onComplete {
case Success(value) => println(s"Got the callback with value = ", finalFuture.value.get.get.get)
case Failure(e) => e.printStackTrace
}
您可以使用
foreach
将a=>Unit
函数应用于选项[a]
中的值(如果存在)
fut.onComplete {
case Success(opt) => opt.foreach { val =>
println(s"Got the callback with value = {}", val)
}
case Falure(ex) => ex.printStackTrace
}
您可以使用
foreach
将a=>Unit
函数应用于选项[a]
中的值(如果存在)
fut.onComplete {
case Success(opt) => opt.foreach { val =>
println(s"Got the callback with value = {}", val)
}
case Falure(ex) => ex.printStackTrace
}
您还可以使用Try to get Option[Option[Int]]选项,然后展平以获取Option[Int]
def printVal(finalFuture: Future[Option[Int]] ) = finalFuture.onComplete(
_.toOption.flatten.foreach(x=> println (s"got {}",x))
)
编辑:假设您不关心stacktrace:)您也可以使用Try-to-get选项[Option[Int]],然后展平以获取选项[Int]
def printVal(finalFuture: Future[Option[Int]] ) = finalFuture.onComplete(
_.toOption.flatten.foreach(x=> println (s"got {}",x))
)
编辑:假设您不关心堆栈跟踪:)您可以嵌套匹配项:
finalFuture.onComplete {
case Success(Some(value)) => println(s"Got the callback with value = ", value)
case Success(None) => ()
case Failure(e) => e.printStackTrace
}
您可以嵌套匹配:
finalFuture.onComplete {
case Success(Some(value)) => println(s"Got the callback with value = ", value)
case Success(None) => ()
case Failure(e) => e.printStackTrace
}