Ce sujet est en fait un peu plus compliqué que ce qui est décrit dans les réponses données jusqu'à présent. Voici blogpost par Rob Norris l'explique plus en détail et donne des exemples de cas où l'utilisation de return peut réellement casser votre code (ou du moins avoir des effets non évidents).
À ce stade, permettez-moi de citer l'essentiel du message. La déclaration la plus importante se trouve au début. Imprimez-le comme un poster et mettez-le sur votre mur :-)
En return
n'est pas "facultatif" ou "inféré" ; il modifie le sens de l'expression. sens de votre programme, et vous ne devriez jamais l'utiliser.
Il donne un exemple, où il casse réellement quelque chose, lorsque vous mettez une fonction en ligne.
// Inline add and addR
def sum(ns: Int*): Int = ns.foldLeft(0)((n, m) => n + m) // inlined add
scala> sum(33, 42, 99)
res2: Int = 174 // alright
def sumR(ns: Int*): Int = ns.foldLeft(0)((n, m) => return n + m) // inlined addR
scala> sumR(33, 42, 99)
res3: Int = 33 // um.
parce que
A return
Lorsqu'elle est évaluée, l'expression abandonne le calcul en cours. et retourne à l'appelant de la méthode dans laquelle l'expression return
apparaît.
Ce n'est qu'un des exemples donnés dans l'article en lien et c'est le plus facile à comprendre. Il y en a d'autres et je vous encourage vivement à y aller, à lire et à comprendre.
Lorsque vous venez de langages impératifs comme Java, cela peut sembler étrange au début, mais une fois que vous vous serez habitué à ce style, cela aura du sens. Permettez-moi de conclure par une autre citation :
Si vous vous trouvez dans une situation où vous pensez vouloir rentrer plus tôt, vous devez repenser la façon dont vous avez défini votre calcul.