Dans une fonction récursive, il est souvent efficace de porter le résultat pas à pas pour permettre une optimisation de l'appel final. Pour signaler à l'utilisateur qu'il n'a pas besoin de fournir un paramètre, il peut être raisonnable de nommer un paramètre "résultat":
def removeOccurence [A] (slice: Seq[A], original: Seq[A]) = {
@scala.annotation.tailrec
def remove (leftOriginal: Seq[A], result: Seq[A]) : Seq[A] =
trimStart (slice, leftOriginal) match {
case (h :: tail) => remove (tail, h +: result)
case (Nil) => result.reverse
}
remove (original, Nil)
}
Mais le plus souvent, j'utilise «carry» et «sofar», que j'ai vus à l'état sauvage, et qui portent l'idée un peu mieux, dans la plupart des cas.
Une deuxième raison est bien sûr, si votre sujet suggère le mot «résultat», par exemple si vous effectuez une évaluation arithmétique. Vous pouvez analyser la formule, remplacer les variables par des valeurs et calculer un résultat à la fin.
Une troisième raison a déjà été énoncée, mais j’ai un petit écart: vous écrivez une méthode qui effectue un travail, disons qu’elle évalue une forme de '' max ''.
def max = {
val result = somethingElseToDo
if (foo) result else default
}
Au lieu d'appeler le résultat '' résultat '', nous pourrions l'appeler '' max '', mais dans certaines langues, vous pouvez omettre la parenthèse lorsque vous appelez une méthode. Ainsi, max serait un appel récursif à la méthode elle-même.
En général, je préférerais un nom qui indique le résultat. Mais si ce nom est déjà pris, peut-être par plus d’une variable, attribut ou méthode, car il existe un champ GUI, une représentation sous forme de chaîne, un numérique et un pour la base de données, l’utilisation d’un autre augmente le risque de confusion. Dans les méthodes courtes de 3 à 7 lignes, "résultat" ne devrait pas être un problème pour un nom.
ofTheJedi
utilisé à cette fin. Pas une recommandation, juste dire que je l'ai vu.Zorglub ofTheJedi = //...; return ofTheJedi;