Как получить доступ к переменным-членам во вложенных классах - PullRequest
0 голосов
/ 06 июня 2018

У меня есть этот код:

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 = ?
    ...
}

Обратите внимание, что мне также нужно обрабатывать ситуацию Option.Спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

Вам нужно будет указать значение по умолчанию для возврата в случае, если один из Option s равен 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 :

Возвращает результат применения [данной функции] f к значению этого scala.Option, если это scala.Option не пусто.Возвращает None, если этот scala.Option пуст.

ПРИМЕЧАНИЕ что это просто возвращает значение myTarget - я предполагаю, что вы присваиваете его result просто для возврата result немедленно - если это так, это избыточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...