Scala: Создание параметров из Seq/Кортежа и добавление в последовательность

#scala

Вопрос:

Редактировать:

Предположим, у меня есть Seq:

 Seq(Some("Earth"),Some("Mars"))
 

Мне нужно добавить еще несколько элементов в начале этой последовательности. Добавляемые значения генерируются на основе значения параметра.
Поэтому я стараюсь делать так, как:

  val o = ....//Option calculated here
 Seq(o.map(myFunction(_)),"Earth","Mars")

 def myFunction(s: String) = s match {
     case "x" => Seq(Some("Jupiter"), Some("Venus"))
     case "y"  => Seq(Some("PLuto"), Some("Mercury"))
 }
 

Но карта дала бы мне Немного(Seq (…..)).

Комментарии:

1. Можете ли вы показать нам, что вы сделали ?

2. Итак, предположим, что опция была a Some , тогда вы хотите добавить все элементы, возвращенные, myFunction если это было a None , то ничего не следует добавлять, верно?

3. Да, это то, что мне нужно.

Ответ №1:

Для такого рода проблем я рекомендую проверить Scaladoc и следовать методике, называемой type-tetris.

Тебе это нужно:

 def prependIfDefined(data: Option[A], previousElements: Seq[Option[B]]): Seq[Option[B]] =
  data.fold(ifEmpty = Seq.empty[Option[B]])(getNewData)    previousElements

def getNewData(a: A): Seq[Option[B]] = ???