Was ist der beste Weg, Option
s zu List
hinzuzufügen.So fügen Sie einer Liste Optionen hinzu
Hier ist mein erster Versuch:
def append[A](as: List[A], maybeA1 : Option[A], maybeA2: Option[A]) : List[A] = as ++ maybeA1.toList ++ maybeA2.toList
Con: Es schafft 2 tmp List
(ich weiß .ToList() ist optional, da es eine implizite Konvertierung von Option ist [A] zu Iterable [A])
Ein anderer Versuch ist
def append2[A](ls: List[A], maybeA : Option[A]) : List[A] = maybeA.map(_ :: ls).getOrElse(ls)
def append[A](as: List[A], maybeA1 : Option[A], maybeA2: Option[A]) : List[A] = append2(append2(as, maybeA1), maybeA2)
Besser pro f aber weniger lesbar ...
Gibt es einen anderen Weg?
Warum möchten Sie eine Option [A] zu einer Liste [A] hinzufügen. Wollen Sie sicher sehen, ob etwas hinzuzufügen ist? –
Nicht am Ende einer Liste hinzufügen. – ziggystar
Ja, ich hasse es, auf Stack Overflow zu sein, aber wenn du dich am Ende anhängst, ist es eine Frage wert: Gibt es tatsächlich einen Grund, warum du 'List' hier verwendest (anstatt einer anderen Art von Sequenz)) –