Извлечь значение из опции списка - PullRequest
1 голос
/ 20 марта 2020

У меня есть опция списка строк, и я знаю, что в этом списке будет только одно значение.

val a = Option[List["value"]]

Как мне получить значение в scala наиболее приличным способом?

Ответы [ 2 ]

7 голосов
/ 20 марта 2020

Так как List также может быть пустым, по определению типа я бы порекомендовал следующий способ:

val value: Option[String] = a.flatMap(_.headOption)

так, headOption - возвращает Option первого элемента списка, поэтому value будет Some, если и внешние Option, и внутренние List не пусты.

Существует также операция List.head, которая возвращает значение T или генерирует исключение в случае, если список отсутствует - но из-за возможного исключения я бы рекомендовал избегать его использования и явно обрабатывать случай пустого списка.

Надеюсь, это поможет!

0 голосов
/ 21 марта 2020

Прямой ответ на ваш вопрос, проверка того, что список в Option содержит только одно значение, будет

 a.exists(_.length == 1)
...