Dieses Thema ist tatsächlich etwas komplizierter, wie in den bisherigen Antworten beschrieben. Dieser Blogpost von Rob Norris erklärt es ausführlicher und gibt Beispiele dafür, wann die Verwendung von return Ihren Code tatsächlich beschädigt (oder zumindest nicht offensichtliche Auswirkungen hat).
Lassen Sie mich an dieser Stelle nur die Essenz des Beitrags zitieren. Die wichtigste Aussage ist gleich am Anfang. Drucken Sie dies als Poster aus und hängen Sie es an Ihre Wand :-)
Das return
Schlüsselwort ist nicht "optional" oder "abgeleitet". Es ändert die Bedeutung Ihres Programms und Sie sollten es niemals verwenden.
Es gibt ein Beispiel, wo es tatsächlich etwas kaputt macht, wenn Sie eine Funktion inline
def sum(ns: Int*): Int = ns.foldLeft(0)((n, m) => n + m)
scala> sum(33, 42, 99)
res2: Int = 174
def sumR(ns: Int*): Int = ns.foldLeft(0)((n, m) => return n + m)
scala> sumR(33, 42, 99)
res3: Int = 33
weil
return
Wenn ein Ausdruck ausgewertet wird, gibt er die aktuelle Berechnung auf und kehrt zum Aufrufer der Methode zurück, in der er return
angezeigt wird.
Dies ist nur eines der Beispiele im verlinkten Beitrag und am einfachsten zu verstehen. Es gibt noch mehr und ich ermutige Sie sehr, dorthin zu gehen, zu lesen und zu verstehen.
Wenn Sie aus imperativen Sprachen wie Java kommen, mag dies zunächst seltsam erscheinen, aber sobald Sie sich an diesen Stil gewöhnt haben, ist dies sinnvoll. Lassen Sie mich mit einem anderen Zitat schließen:
Wenn Sie sich in einer Situation befinden, in der Sie glauben, frühzeitig zurückkehren zu wollen, müssen Sie die Art und Weise, wie Sie Ihre Berechnung definiert haben, überdenken.