[Scala] String Array를 패턴매칭하기 (String[] Pattern Matching)

Wan Geun Lee / June 29, 2020

아래와 같은 코드를 어떻게 개선할까?

Scala
0
1
2
3
4
5
logType.split(":")(0) match {
  case "my-type" =>
    doSomething()
  case _ @unknownLogType =>
    context.log.info(s"**** 처리할 수 없는 로그 형식 입니다 (logType: $unknownLogType)")
}

logType은 스칼라 표준 String이며 콜론(:) 구분자가 포함되어 있는 문자열이다. 따라서 : 으로 split하면 String[]이 반환되며 길이는 어떻게 될지 아무도 모른다. 그런 상황에서 0번 인덱스를 접근하는 코드(logType.split(":")(0))는 과연 안전한 코드일까?

위 코드를 좀 더 안전하게 접근할 수 있는 방식이 있다. 바로 아래와 같이 패턴 매칭을 사용하면 된다.

Scala
0
1
2
3
4
5
logType.split(":") match {
  case Array("my-type", _) =>
    doSomething()
  case _ @unknownLogType =>
    context.log.info(s"**** 처리할 수 없는 로그 형식 입니다 (logType: $unknownLogType)")
}