Ich erstelle eine Liste von verschiedenen Fallklassenobjekten auf der Grundlage einer Schleife und einer Musterübereinstimmung. Ich möchte die Elemente ausschließen (überspringen), die den Standardfall (im Wesentlichen Filtern der Liste und Zuordnung zu Typen in einem Schritt) treffen.Ergebnis nur, wenn das Muster übereinstimmt
Ich bin wahrscheinlich zu neu zu Scala, um alle Möglichkeiten zu sehen. Mein Versuch:
val events = for (ev <- data) yield {
ev.sport match {
case "FOOTBALL" => new FootballEvent(ev)
case "SOCCER" => new SoccerEvent(ev)
case _ => None
}
}
ich danach die Liste filtern konnte, aber ich vermute, es gibt einige Phantasie Scala Art und Weise, dies zu tun :)
Bitte lassen Sie mich wissen, wenn Sie eine Vorstellung davon haben, wie dies am besten getan werden sollte !
Wenn es nur zwei Fälle gibt, statt drei oder mehr, kann dies in einer einzigen "for ... yield" erfolgen - hier ist ein Beispiel: 'for {Some (x) <- Some (None: Option [String])} yield "sollte nicht herkommen" ' –