scala - 使用 OptionT 将 Future[Option[_]] 与普通 Future[_] 组合时语法更好
问题描述
假设我有f(a: Int): Future[Option[T]]
and g(b: Int): Future[K]
,我可以像下面这样将它们与 cat's 结合起来OptionT
:
for {
f <- OptionT(f(a))
g <- OptionT(g(b).map(Option.apply)
} yield (f, g)
有没有更好的方法来做到这一点而无需映射每个Future[_]
?
解决方案
一个小的改进是做类似的事情:
for {
f <- OptionT(f(a))
g <- OptionT.liftF(g(b))
} yield (f, g)
推荐阅读
- r - 我收到以下错误。你能帮帮我吗
- r - 在样本外预测中使用 tail()
- python - 绘制曲面动画的最快方法
- python - 为什么熊猫不允许我为此数据框创建新列并抛出带有复制警告的设置?
- export - 有没有办法在 Inkscape 中将多个图层组合导出为 JPEG 或 PNG 文件?
- angular - Angular 11.2.6 或 Typescript TS2345 错误
- regex - 无法使用正则表达式或在 ansible 任务上搜索字符串搜索
- c - NAN 用于算术/比较运算:编译器之间的不同结果 wrt 引发浮点异常:如何解释?
- dm-script - 如何在 DM 脚本中的 Gatan Digital Micrograph (GMS) 中从自动保存中排除某些图像
- python - 如何在另一个文件中的 tkinter 中打开多个窗口?