Als ich anfing, Scala zu betrachten, gefiel mir das Aussehen von Nachforschungen. Sie schienen ein bisschen wie die foreach-Schleifen zu sein, die ich von Java 5 gewohnt war, aber mit funktionalen Einschränkungen und einer Menge süßer syntaktischer Nettigkeit.Scala's For-Comprehensions: Vitalfunktion oder syntaktischer Zucker?
Aber wie ich den Scala Stil aufgenommen habe, finde ich, dass jedes Mal, wenn ich eine for-comprension verwenden könnte ich verwende map
, flatMap
, filter
, reduce
und foreach
statt. Die Absicht des Codes scheint mir auf diese Weise klarer zu sein, mit weniger möglichen versteckten Überraschungen, und sie sind normalerweise auch kürzerer Code.
Soweit ich weiß, werden For-Comprehensions immer in diese Methoden kompiliert, also frage ich mich: Für was sind sie eigentlich? Fehle ich eine funktionale Revalation (es wäre nicht das erste Mal)? Tun For-Comprehensions etwas, was die anderen Features nicht können oder zumindest viel unhandlicher sein könnten? Leuchten sie unter einem bestimmten Anwendungsfall? Ist es wirklich nur eine Frage des persönlichen Geschmacks?
Dies ist fast ein Duplikat http://stackoverflow.com/questions/1052476/Können-jemand-erklären-Scala-Ertrag. Diese Frage fragte sich, was "Ausbeute" bedeutet, und dieser fragt sich, was sein Zweck ist. Die Antworten sind ungefähr gleich. –