Scala에서 이중(또는 다중) 패턴 매칭을 간단하게 작성하는 방법은 코드의 가독성을 높이고 중첩된 패턴 매칭의 복잡성을 줄여줍니다. 아래에 몇 가지 방법을 소개하겠습니다.
Scala에서는 패턴 매칭을 중첩하지 않고도 여러 레벨의 패턴을 한 번에 매칭할 수 있습니다.
예시:
case class Person(name: String, address: Address)
case class Address(city: String, zip: String)
// 중첩된 패턴 매칭
person match {
case Person(name, address) =>
address match {
case Address(city, zip) => // 처리 로직
}
}
// 간단하게 작성하기
person match {
case Person(name, Address(city, zip)) => // 처리 로직
}
@
기호를 사용하여 부분 패턴에 이름 부여하기@
기호를 사용하면 매칭된 부분을 이름으로 참조할 수 있어 중첩을 줄일 수 있습니다.
예시:
expr match {
case UnOp("abs", e @ UnOp("abs", _)) => e
}
위 코드에서 e @ UnOp("abs", _)
는 UnOp("abs", _)
에 매칭되는 부분을 e
로 이름지어 참조합니다.
패턴 가드를 사용하면 추가적인 조건을 명시하여 중첩을 피할 수 있습니다.
예시:
list match {
case head :: tail if head > 0 => // 처리 로직
}
변수 바인딩을 통해 패턴 매칭 결과를 변수에 할당하고 재사용할 수 있습니다.
예시:
tree match {
case node @ Node(left, right) => // node를 사용하여 처리 로직
}
unapply
메서드와 추출자 사용하기추출자를 사용하면 복잡한 패턴 매칭을 단순화할 수 있습니다.