0
val list1 = List(1, 1, 2, 3, 5,7,8,4)
def lastrecursive[A](ls :List[A]):A = ls match{
case p :: Nil => p // what is the meaning of Nil
case _ :: tail => lastrecursive(tail)
case _ => throw new NoSuchElementException
}
재귀 형식의 코드 ABOVE의 경우. 누구든지 우리가 왜 :: 및 case h 및 case tail 및 case _를 제공하는지 설명 할 수 있습니까? 목록 일치 패턴 작업 중.스칼라의 매치 패턴에서 대소 문자의 의미는 무엇입니까?
and for reversing a list
def reverseRecursive[A](ls: List[A]): List[A] = ls match {
case Nil => Nil
case h :: tail => reverseRecursive(tail) ::: List(h)
}
어떻게 이것이 ::: 목록 (h) 작동합니까?
음 ... 나는이 경우에'operator' 대신'method'라는 단어를 사용하는 것이 더 좋을 것이라고 믿습니다. 그리고'::'는 목록을 구성하거나 분해하는 데 사용되지 않습니다. 'List'에 엘리먼트를'prepend '하는 것은'right associative' 메소드입니다. 'p :: Nil'을 볼 때,'Nil'은'p'가 앞에 붙는 빈리스트입니다. –
@SarveshKumarSingh. 당신은 정확합니다 - 업데이트되었습니다. –
'operator'는 매우 표준적인 의미를 지닌 매우 표준적인 단어입니다. 그리고 "비영 숫자 이름을 가진 메소드의 이름"이 아닙니다. 스칼라에 대해 말할 때'연산자 '라는 단어를 사용하지 말 것을 제안합니다. –