首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何访问嵌套case类中的成员变量

如何访问嵌套case类中的成员变量
EN

Stack Overflow用户
提问于 2018-06-06 05:00:20
回答 1查看 150关注 0票数 -1

我有这样的代码:

代码语言:javascript
复制
case class L2JsonMapping(myTarget: Option[Int])

case class L1JsonMapping(l1: Option[L2JsonMapping])

case class JsonMapping(l0: Option[L1JsonMapping])

假设它们已被初始化。现在我应该如何在下面的函数中将"myTarget“赋值给"result”:

代码语言:javascript
复制
def function(in: JsonMapping): Int = {
    val result = ?
    ...
}

请注意,我还需要处理选项情况。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-06 05:08:07

您必须提供一个默认的值,以便在其中一个OptionNone的情况下返回。让我们假设默认值为0 -如果是这样的话,您可以使用:

代码语言:javascript
复制
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 -如果是这样,那就是多余的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50708848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档