我有这样的代码:
case class L2JsonMapping(myTarget: Option[Int])
case class L1JsonMapping(l1: Option[L2JsonMapping])
case class JsonMapping(l0: Option[L1JsonMapping])
假设它们已被初始化。现在我应该如何在下面的函数中将"myTarget“赋值给"result”:
def function(in: JsonMapping): Int = {
val result = ?
...
}
请注意,我还需要处理选项情况。谢谢。
发布于 2018-06-06 05:08:07
您必须提供一个默认的值,以便在其中一个Option
为None
的情况下返回。让我们假设默认值为0
-如果是这样的话,您可以使用:
def function(in: JsonMapping): Int = in.l0 // get Option[L1JsonMapping]
.flatMap(_.l1) // flatMap to get an Option[L2JsonMapping]
.flatMap(_.myTarget) // flatMap to get an Option[Int]
.getOrElse(0) // get value value or default
这使用了Option.flatMap
,您可以在ScalaDocs中了解到它
如果此scala.Option不为空,则
返回将给定函数f应用于此scala.Option值的结果。如果此scala.Option为空,则返回None。
注意,,这只是返回myTarget
的值--我假设你把它赋值给result
,只是为了立即返回result
-如果是这样,那就是多余的。
https://stackoverflow.com/questions/50708848
复制相似问题