【发布时间】:2020-01-19 06:37:51
【问题描述】:
我有这个val cacheElement:Future[Option[T]],如果Option 是Some,则希望的结果是保留这个未来,或者如果未来是None,则基于另一个服务创建另一个Future[Option[T]]。使用模式匹配看起来像这样:
val cacheElement:Future[Option[T]] = cache.get[T](cacheKey)
for {
opt <- cacheElement flatMap {
case Some(cached) => Future { Some(cached) }
case None => createFallback(args)
}
} yield { opt match {
case Some(_) => //do something
case None => // Do something else
}
}
def createFallback[T](args:T):Future[Option[T]] = ???-
我怎样才能以更优雅和简洁的方式做到这一点? Future { Some(cached) } 的重复在我看来非常冗长
【问题讨论】: