scala - 处理 future 和选择的干净方式

标签 scala

我的代码块目前看起来像这样,看起来很难看:

for {
  maybeUser <- getUser(1)
} yield {
  if (maybeUser.isDefined) {
     someFunction1(maybeUser.get)
  } else None
}

getUser 的样子:

def getUser(id: Int): Future[Option[user]]

最佳答案

你应该可以这样:

for {
  maybeUser <- getUser(1)
} yield {
  maybeUser.map(someFunction1)
}

这将产生一个 Option[T](其中 TsomeFunction1 的返回类型),这应该是您想要的。

对于 Option 模式的精彩总结,我强烈推荐这篇文章:Your Options Don't Match

关于scala - 处理 future 和选择的干净方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41411553/

相关文章:

scala - 如何使用 ValueMapper 使用 Scala 更改 Kafka Streams 10.2 中的值类型

Scala 和 HttpClient : How do I resolve this error?

scala - 如何在Scala中为任何Traversable实现通用算法?

scala - 如何在接收中记录内部参与者状态?

scala - 迭代案例类数据成员

scala - SBT组件不起作用(无效命令)

java - Akka 远程处理 : Dead Letters after enabling Serialization

scala - 在scala中的构造函数内部调用函数

scala - 路径依赖类型是子类型吗?

scala - 返回类型重载?