В рекурсивной функции часто эффективно переносить результат из шага в шаг, чтобы оптимизировать хвостовой вызов. Чтобы дать пользователю понять, что ему не нужно предоставлять параметр, целесообразно назвать параметр «результатом»:
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)
}
Но чаще я использую «carry» и «sofar», которые я видел в дикой природе и которые в большинстве случаев несут идею еще лучше.
Вторая причина, конечно, если ваша тема предлагает слово «результат», например, если вы делаете арифметическую оценку. Вы можете проанализировать формулу, заменить переменные значениями и в конце вычислить результат.
Третья причина уже была изложена, но у меня есть небольшое отклонение: вы пишете метод, который выполняет какую-то работу, скажем, он оценивает форму '' max ''.
def max = {
val result = somethingElseToDo
if (foo) result else default
}
Вместо того, чтобы вызывать результат '' result '', мы можем назвать его '' max '', но в некоторых языках вы можете опустить круглые скобки при вызове метода, поэтому max будет рекурсивным вызовом самого метода.
В общем, я бы предпочел имя, которое говорит, каков результат. Но если это имя уже занято, может быть, более чем одной переменной, атрибутом или методом, потому что есть GUI-поле, строковое представление, числовое и одно для базы данных, использование другого увеличивает вероятность путаницы. В коротких методах от 3 до 7 строк, '' результат '' не должен быть проблемой для имени.
ofTheJedi
используется для этой цели. Не рекомендация, просто говорю, что видел это.Zorglub ofTheJedi = //...; return ofTheJedi;