Scala 에는 pattern matching 이라는 기능이 있는데,
Java 언어와 마찬가지로 case 문을 쓰는 것이 비슷하긴 한데, 문법은 약간 틀리다.
기본적인 문법은 아래의 예제를 보면 이해가 쉬울 듯 하다.
1 val firstArg = if (!args.isEmpty) args(0) else ""
2
3 val friend =
4 firstArg match {
5 case "salt" => "pepper"
6 case "chips" => "salsa"
7 case "eggs" => "bacon"
8 case _ => "huh?"
9 }
10
11 println(friend)
1 번째 라인에서는 프로그램의 command line argument 로부터 입력을 받는다. (def main(args: Array[String]) {} 생략)
그래서 얻은 String type 의 변수를 가지고 pattern matching을 하게 된다. 4번째 라인에서와 같이 "변수명 match" 로 시작하게 된다. 그리고 5 ~ 8 번째 줄처럼 "case" 를 사용하여 패턴 매칭을 하게 된다. case 바로 오른쪽에는 매칭되는 변수 오른쪽은 그 결과를 지정한다. "=>" 키워드는 왼쪽의 입력이면 오른쪽과 같은 결과를 낸다 라는 일종의 함수와 같다고 생각하면 편할 듯 싶다.
Scala 의 패턴 매칭은 Java 언어와 가장 큰 차이점은 Scala 는 match expression 이 값을 결과로 내 놓는다는 점이다.
다른 차이점은 Java 언어와 같이 fall through 가 없다는 점이다. Java 에서는 case 가 일치하면 "break" 키워드가 없으면 그 아래의 case 문이 실행이 되는데 반면, Scala 에서는 해당 패턴만 실행이 되고, 해당 사항이 없을 경우 어느 것도 실행 되지 않는다는 점이다.
다음에는 좀더 자세한 pattern matching 에 대한 글을 남겨볼까 한다.
'Programming > Scala' 카테고리의 다른 글
Scala - Creating IntelliJ Scala project using sbt (sbt 를 이용하여 IntelliJ 용 Scala project 생성하기) (0) | 2011.11.10 |
---|---|
Scala - Basic calculator using Parser Combinator (스칼라 언어로 만드는 간단한 사칙 연산 계산기 프로그램) (0) | 2011.11.10 |
Scala - IDE recommendation (scala 를 위한 개발 IDE 추천) (0) | 2011.11.10 |
Scala - syntax highlighting for vi vim (0) | 2011.11.10 |
Scala - side effect 란 무엇인가? (0) | 2011.11.10 |