Tour of Scala

패턴 매칭

Language

스칼라는 범용적 빌트인 패턴 매칭 기능을 제공한다. 이는 우선 매칭 정책에 따라 어떤 종류의 데이터든 매칭할 수 있도록 해준다. 다음은 정수 값을 매칭하는 방법에 관한 간단한 예제다.

object MatchTest1 extends App { def matchTest(x: Int): String = x match { case 1 => "one" case 2 => "two" case _ => "many" } println(matchTest(3)) } 

case 명령문을 포함하고 있는 블록은 정수를 문자열로 매핑하는 함수를 정의한다. match라는 키워드는 함수(위에서 살펴본 패턴 매칭 함수와 같은)를 오브젝트에 적용하는 편리한 방법을 제공한다.

다음은 두 번째 예제로 여러 타입의 패턴에 맞춰 값을 매칭한다.

object MatchTest2 extends App { def matchTest(x: Any): Any = x match { case 1 => "one" case "two" => 2 case y: Int => "scala.Int" } println(matchTest("two")) } 

첫 번째 casex가 정수 값 1일 때 매칭된다. 두 번째 casex가 문자열 "two"일 때 매칭된다. 세 번째 케이스는 타입이 지정된 패턴으로 구성되며, 모든 정수와 매칭돼 선택자 값 x를 정수 타입 변수 y로 연결한다.

스칼라의 패턴 매칭 명령문은 케이스 클래스를 통해 표현되는 대수 타입과 매칭할 때 가장 유용하다. 또한 스칼라는 추출자 오브젝트unapply 메소드를 사용해, 독립적인 케이스 클래스로 패턴을 정의할 수 있도록 해준다.

윤창석, 이한욱 옮김

Contributors to this page: