как конвертировать Some (ArrayBuffer ("myString", "String")) в список строк - PullRequest
0 голосов
/ 09 марта 2020

У меня есть метод, который возвращает Some(ArrayBuffer("myString", "String")) после использования метода .map(), как я могу преобразовать его в список строк?

Вот как это выглядит прямо сейчас, мне интересно, если я можно использовать flatMap вместо карты?

res.featureList.asScala
      .get("Whitelist")
      .map(
        feature =>
          feature.whitelistedIdWithReasons.asScala
            .map(f => f.accountIdRuleName)
      ).toList.flatten

Ответы [ 3 ]

3 голосов
/ 09 марта 2020
 Some(ArrayBuffer("myString", "String")).toList.flatten

Сначала превратите Option[ArrayBuffer[String]] в List[ArrayBuffer[String]]. Затем выровняйте List[ArrayBuffer[String]] в List[String]

1 голос
/ 09 марта 2020

Вы можете map далее:

Some(ArrayBuffer("myString", "String"))
    .map(_.toList)
    .get

Вместо get вы можете использовать orElse, чтобы указать значение по умолчанию и избежать исключения.

0 голосов
/ 11 марта 2020
Some(ArrayBuffer("myString", "String")).fold(List.empty[String])(_.toList)
...