@_*
이 가변 인수 목록과 일치한다고 가정합니다. 다음과 같이 사용하려고하지만 코드가 컴파일되지 않습니다.스칼라에서 @ _ * 추출기가 컴파일되지 않음
val l= List(1,2,3,4,5)
l match {
case (first +: second +: [email protected]_*) => println("atleast 2 elements in the list")
}
@_*
이 가변 인수 목록과 일치한다고 가정합니다. 다음과 같이 사용하려고하지만 코드가 컴파일되지 않습니다.스칼라에서 @ _ * 추출기가 컴파일되지 않음
val l= List(1,2,3,4,5)
l match {
case (first +: second +: [email protected]_*) => println("atleast 2 elements in the list")
}
두 가지 가능한 해결책.
가지고 당신의 List()
경기 List()
:
case List(first, second, [email protected]_*) => . . .
또는 일치하는 List()
연결된 요소의 순서에 대하여 :
case first +: second +: rest => . . .
어느 쪽이든, second
가 1 위를 채워집니다 식별자 first
및 및 목록의 두 번째 값과 rest
은 남아있는 값을 포함합니다.
고마워요. List (...) 또는 (a + :(b + : Nil)) 구문을 사용하여 List가 작성 되었기 때문입니까? –
@ManuChadha; 예, 다소 있습니다. 'case' 다음에'List()'를 만들 수있는 패턴이 오면'List' 컴패니언 객체의'unapplySeq()'메소드가 호출되어 패턴 일치를 완료합니다. – jwvh
예에서 '@ _ *'를 제거하면 제대로 작동합니다. 여기에서 그 사용법에 대한 좋은 설명을 찾을 수 있습니다 : https://stackoverflow.com/a/9229677/7579547 – Shaido