En una función recursiva, a menudo es efectivo llevar el resultado paso a paso, para hacer una optimización de llamada de cola. Para indicar al usuario que no necesita proporcionar un parámetro, puede ser razonable nombrar un parámetro "resultado":
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)
}
Pero más a menudo uso 'carry' y 'sofar', que he visto en la naturaleza, y que llevan la idea incluso un poco mejor, en la mayoría de los casos.
Una segunda razón es, por supuesto, si su tema sugiere la palabra "resultado", por ejemplo, si realiza una evaluación aritmética. Puede analizar la fórmula, reemplazar las variables con valores y calcular un resultado al final.
Ya se ha establecido una tercera razón, pero tengo una pequeña desviación: escribe un método que realiza algún trabajo, digamos que evalúa una forma de '' max ''.
def max = {
val result = somethingElseToDo
if (foo) result else default
}
En lugar de llamar al resultado '' resultado '', podríamos llamarlo '' max '', pero en algunos idiomas puede omitir paréntesis al llamar a un método, por lo que max sería una llamada recursiva al método en sí.
En general, preferiría un nombre que diga cuál es el resultado. Pero si ese nombre ya está tomado, tal vez por más de una variable, atributo o método, porque hay un campo GUI, una representación de cadena, un número y uno para la base de datos, el uso de otro aumenta la probabilidad de confusión. En métodos cortos de 3 a 7 líneas, "resultado" no debería ser un problema para un nombre.
ofTheJedi
usado para ese propósito. No es una recomendación, solo digo que lo he visto.Zorglub ofTheJedi = //...; return ofTheJedi;