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