我有一个函数(我删除了类型,因为我更关心如何将事物拼凑在一起):
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?
谢谢!