재귀 함수에서 테일 콜 최적화를 위해 결과를 단계별로 전달하는 것이 종종 효과적입니다. 사용자에게 매개 변수를 제공 할 필요가 없음을 알리기 위해 매개 변수 이름을 "result"로 지정하는 것이 합리적 일 수 있습니다.
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
}
결과``result ''를 호출하는 대신``max ''라고 부를 수 있지만 일부 언어에서는 메소드를 호출 할 때 괄호를 생략 할 수 있으므로 max는 메소드 자체에 대한 재귀 호출입니다.
일반적으로 결과가 무엇인지 알려주는 이름을 선호합니다. 그러나 GUI 이름, 문자열 표현, 숫자 및 데이터베이스에 대한 이름이 있으므로 다른 이름을 사용하면 혼동의 가능성이 높아집니다. 3 ~ 7 줄의 짧은 방법에서``결과 ''는 이름에 문제가되어서는 안됩니다.
ofTheJedi
그 목적으로 사용되는 것을 보았다 . 추천서가 아니라 내가 본 것입니다.Zorglub ofTheJedi = //...; return ofTheJedi;