스칼라 꼬리 재귀에 대한 질문이 있습니다. 필자는 목록을 가져 와서 짝수 번호의 새로운 목록을 만드는 간단한 꼬리 재귀 코드를 작성했습니다. 그러나 scala가 요소를 목록에 추가 할 수 없기 때문에 목록이 내림차순으로 정렬됩니다. 아래의 코드스칼라에서 꼬리 재귀
def listCreator(lists: List[Int]): List[Int] = {
@tailrec
def evenListCreator(lists: List[Int], accum: List[Int]): List[Int] = {
lists match {
case Nil => accum
case x :: Nil if (isEven (x) == true) => x :: accum
case x :: Nil if (isEven (x) == false) => accum
case x :: tail if (isEven (x) == true) => evenListCreator(tail, x :: accum)
case x :: tail if (isEven (x) == false) => evenListCreator(tail, accum)
}
}
evenListCreator(lists, List())
}
는 I가 다음과 같은 질문
나는이 방법에서 목록을 반전 성명을 추가 할 수 있습니까?
이 메서드 호출 바로 뒤에 오는
evenListCreator(lists, List())
라인은 꼬리 재귀를 위해 필수입니까?
'Vector'는 불변하지만 합리적으로 효율적 추가를 가지고 ... 이건 정말, 단지 학습 운동입니다 알고 있지만, 당신은 하하, 내가 어딘가에 시작했다 List' –