Für mich ist dies ein klassischer Anwendungsfall für die monadische Benutzeroberfläche.
for {
opt <- iterable
t <- opt
} yield t
Es ist nur Zucker für die flatMap
oben beschriebene Lösung, und es produziert identisch Bytecode. Allerdings ist Syntax wichtig, und ich denke, eine der besten Zeiten, um Scala monadischen for
Syntax verwenden, ist, wenn Sie mit Option
arbeiten, vor allem in Verbindung mit Sammlungen.
Ich denke, diese Formulierung ist wesentlich besser lesbar, vor allem für diejenigen, die nicht mit der funktionalen Programmierung vertraut sind. Ich versuche oft sowohl die monadischen als auch die funktionalen Ausdrücke einer Schleife und sehe, was einfacher scheint. Ich denke, flatMap ist ein harter Name für die meisten Leute zu grok (und tatsächlich, ruft es >>=
macht intuitiver Sinn für mich).
Zu wissen, wer du bist (aus der scala-user mailing list), du hast recht ich bin mir sicher (habe im Moment keinen Zugriff auf meine Scala dev envt :-). Kannst du ein bisschen erklären, wie das funktioniert. Ich verspreche, ich bin kein Idiot, aber ich habe keine Ahnung, wie ich das von der Scaladoc bekommen sollte. –
Wäre es nicht "it flatMap {_ elements}"? (Ich habe das Scaladoc schon wieder gelesen!) –
Es wäre toll Scala Gurus auf StackOverflow zu sehen. Die scala-user mailing list füllt meinen Posteingang mit obskuren Argumenten über break/continue :-) –