Dev.
Kotlin - 'when expression', 코틀린의 switch-case 본문
1. Java 의 Switch-case 구문
//in java
int val_ = 0;
switch(val_){
case 1:
System.out.print("print 1");
break;
case 2:
System.out.print("print 2");
break;
default:
System.out.print("default");
break;
}
위 와 같은 switch-case 분기문을 자바에서 꽤 자주 사용 하였을 것 이다.
switch-case 의 최대 단점으로 생각 했던 것 은
- 조건 당 걸리는 break 가 누락 된다면, 의도치 않은 아래의 case 까지 경유 하는 부분. (이로 인해서 간단한 소스코드 에서는 별 문제가 없겠지만, 거대한 소스일 경우 찾기 힘들정도의 에러를 뱉어낼 수 있다.)
//in java
int val_ = 0;
switch(val_){
case 1:
case 2:
System.out.print("print 1, 2");
break;
default:
System.out.print("default");
break;
}
물론 위 처럼 의도적으로 break 를 누락시켜 특정 케이스에서 소스코드를 줄일 수 있는 장점도 분명히 존재하는 부분이다.
2. Kotlin 의 When expression
아래는 코틀린에서 switch-case 의 대체제로 활용될 when expression 의 예 이다.
//in Kotlin
val val_ = 0
when (val_) {
1 -> print("print 1")
2 -> print("print 2")
else -> print("default")
}
정말 간결해졌다, 코드 라인 수 가 눈에 띄게 감소하였다.
when expression 에서 기존 자바의 switch-case 에서 사용하였던 의도적인 break 누락은 아래와 같다.
// in Kotlin
val val_ = 0
when (val_) {
1, 2 -> print("print 1, 2")
else -> print("default")
}
switch-case 구문에서 조건 당 붙게되는 case 키워드를 확연히 줄여 보일러플레이트 코드를 감소 시킬 수 있고,
이는 곧 코드의 가독성 증가로 직결된다.
참고 : https://kotlinlang.org/docs/reference/control-flow.html#when-expression
'Kotlin' 카테고리의 다른 글
Kotlin - 늦은 초기화 (1) lateinit (0) | 2019.11.12 |
---|