Kotlin/Kotlin Language

[Kotlin] when

chattymin 2023. 1. 18. 00:11
728x90
반응형

코틀린에는 when이라는 함수가 있다. 이번에는 when에 대해서 알아보자.

 

When이란?

java의 switch라고 생각하면 된다.

 

Java는 아래와 같다

switch(값){
    case Case1:
        실행할 내용;
        break;
    case Case2:
        실행할 내용;
        break;
    case Case3:
        실행할 내용;
        break;
    default:
        실행할 내용;
        break;
}

 

이것을 Kotlin의 when으로 바꿔보자.

when(값){
	Case1 -> 실행할 내용
	Case2 -> 실행할 내용
	Case3 -> 실행할 내용
	else -> 실행할 내용
}

조금 더 깔끔하다.

 

값과 Case를 비교하고 같으면 -> 이후의 내용을 실행한다.

when의 else는 Switch의 default와 같다고 생각하면 된다. 위의 Case들에 전부 해당하지 않으면 else가 실행된다.

Switch와 when의 차이점은 break의 유무이다. when에는 각 case마다 break가 존재한다고 생각하면 된다. 즉, 하나의 Case가 해당된다면 밑에 있는 내용은 실행되지 않는다. 

 

when의 결과값이 return된다고 생각하여 when 함수를 사용해도 된다. 무슨소린지는 아래 예제를 보면서 설명하겠다.

fun main() {
    dayOfWeek()
}

fun dayOfWeek(){
    println("What day is it today?")

    println(when(Calendar.getInstance().get(Calendar.DAY_OF_WEEK)){
        1 -> "Monday"
        2 -> "Tuesday"
        3 -> "Wednesday"
        4 -> "Thursday"
        5 -> "Friday"
        6 -> "Saturday"
        7 -> "Sunday"
        else -> "ERROR"
    })
}

위의 코드의 경우에는 println()안에 when을 사용하였다. when에서 나오는 결과물이 println으로 출력된다.

 

fun main() {
    println("What day is it today?")
    println(dayOfWeek())
}

fun dayOfWeek()=when(Calendar.getInstance().get(Calendar.DAY_OF_WEEK)){
        1 -> "Monday"
        2 -> "Tuesday"
        3 -> "Wednesday"
        4 -> "Thursday"
        5 -> "Friday"
        6 -> "Saturday"
        7 -> "Sunday"
        else -> "ERROR"
    }

위와 같이 함수의 return값으로도 when을 사용할 수 있다.

 

생각보다 활용성이 좋으니까 잘 써먹으면 좋다. 일단 깔끔해서 보기 좋음 ㅎ

728x90
반응형