【发布时间】:2013-02-13 05:29:49
【问题描述】:
我有一个模型,它有一些选项字段,其中包含另一个选项字段。例如:
case class First(second: Option[Second], name: Option[String])
case class Second(third: Option[Third], title: Option[String])
case class Third(numberOfSmth: Option[Int])
我从外部 JSON 接收这些数据,有时这些数据可能包含 null,这就是这种模型设计的原因。
所以问题是:获得最深领域的最佳方法是什么?
First.get.second.get.third.get.numberOfSmth.get
上面的方法看起来真的很难看,如果其中一个对象为 None,它可能会导致异常。我正在寻找 Scalaz lib,但没有找到更好的方法来做到这一点。
有什么想法吗? 提前致谢。
【问题讨论】:
-
只是一个注释,但 flatMap 不会像下面给出的那样工作几次。它应该是
First.second.flatMap(_.third.flatMap(_.numberOfSmth)).get并且仍然可能抛出异常 -
确实,谢谢。谢谢大家的回答,我找到了我要找的东西。
标签: scala option monads scalaz