【发布时间】:2017-06-13 18:36:09
【问题描述】:
我有一个函数(我删除了类型,因为我更关心如何将它们拼凑在一起):
def func(opt1: Option, opt2: Option) = Future {
for {
o1 <- opt1
o2 <- opt2
} functionThatReturnsAFuture(o1, o2)
Future.successful()
}
我正在尝试验证选项,然后调用返回未来的函数,但我不知道如何在惯用的 scala 中执行此操作。
如果我这样做:
def func(opt1: Option, opt2: Option) = Future {
for {
o1 <- opt1
o2 <- opt2
} yield functionThatReturnsAFuture(o1, o2)
}
它自然会返回一个 Option[Future]。
我也可以opt1.flatMap(opt2.map(functionThatReturnsAFuture)).sequence,但这仍然很丑。
是否有任何惯用的 scala(或 scala + 猫)方式进行这样的验证并返回 Future?
谢谢!
【问题讨论】:
-
我个人会选择
getOrElse(Future.failed)
标签: scala scala-cats