Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[TIL]20241012 when 표현식 본문

Kotlin

[TIL]20241012 when 표현식

최밤빵 2024. 10. 12. 22:17

코틀린을 공부하면서 조건문을 처리하는 when 표현식을 접하게 되었다. 코틀린의 when은 다양한 조건을 간결하고 직관적으로 처리할 수 있는 기능으로, 복잡한 조건을 여러 줄에 걸쳐 처리하는 경우에도 매우 유용하다. 

 

▶when 표현식이란?

when은 코틀린에서 조건문을 처리할 때 사용하는 제어 구조이다. 자바에서 흔히 사용하는 if-else나 switch 문을 대체할 수 있고, 다양한 형태로 조건을 검사하고 처리할 수 있다. 특히, when은 표현식(expression)이기 때문에 값을 반환할 수 있어 더욱 유연하게 사용할 수 있다.

 

▶기본적인 when 사용법

when은 특정 값이나 표현식을 기준으로 조건을 검사하고, 그에 맞는 결과를 반환하거나 실행할 코드를 지정하는 방식으로 동작한다.

fun main() {
    val day = 3

    when (day) {
        1 -> println("월요일")
        2 -> println("화요일")
        3 -> println("수요일")
        4 -> println("목요일")
        5 -> println("금요일")
        else -> println("주말")
    }
}

→ 변수를 기준으로 각 조건에 맞는 결과를 출력하는 방식으로, else는 모든 조건이 맞지 않을 경우 실행되는 블록이고, 자바의 default와 유사하다.

 

▶ when 표현식의 다양한 활용

when은 단순한 값 비교 외에도 다양한 방식으로 활용될 수 있다.여러 조건을 효율적으로 처리할 수 있으며, 특히 복잡한 조건을 처리할 때 유용하다.

 

▷범위 검사

when을 사용하면 특정 값이 범위에 속하는지를 간편하게 검사할 수 있다. 코틀린에서는 in 키워드를 사용하여 값이 범위 내에 있는지 확인할 수 있다.

fun checkNumber(num: Int) {
    when (num) {
        in 1..10 -> println("1부터 10 사이의 숫자입니다.")
        in 11..20 -> println("11부터 20 사이의 숫자입니다.")
        else -> println("20 이상의 숫자입니다.")
    }
}

→ in 키워드를 사용해 숫자가 특정 범위에 속하는지 검사하고, 그 결과에 따라 다른 메시지를 출력한다. 이는 자바의 여러 if 문을 대체할 수 있는 간결한 방식이다.

 

▷타입 검사

코틀린의 when 표현식은 타입 검사도 쉽게 처리할 수 있다. is 키워드를 사용해 변수가 특정 타입인지 검사하고, 그에 따라 다른 코드를 실행할 수 있다.

fun checkType(obj: Any) {
    when (obj) {
        is String -> println("문자열입니다.")
        is Int -> println("정수입니다.")
        is Boolean -> println("부울 값입니다.")
        else -> println("알 수 없는 타입입니다.")
    }
}

→  when을 사용해 객체의 타입을 검사하고, 각 타입에 맞는 메시지를 출력한다. 이 방식은 자바의 instanceof 키워드를 대체하며, 코드를 더 간결하게 만든다.

 

▷표현식으로서의 when

코틀린의 when은 표현식이기 때문에, 조건에 따라 값을 반환하는 데 사용할 수 있다. 이 방식은 여러 조건에 따라 서로 다른 값을 반환해야 할 때 유용하다.

fun getDayName(day: Int): String {
    return when (day) {
        1 -> "월요일"
        2 -> "화요일"
        3 -> "수요일"
        4 -> "목요일"
        5 -> "금요일"
        else -> "주말"
    }
}

→ when을 통해 day에 해당하는 요일 이름을 반환하는 예시로, when이 표현식이기 때문에 값을 반환할 수 있으며, return 키워드를 사용해 결과를 바로 반환할 수 있다.

 

▶when의 다양한 조건 처리

when 표현식은 단순한 값 비교나 범위 검사 외에도 다양한 방식으로 활용될 수 있다.

 

▷여러 조건을 한 줄로 처리

여러 조건을 한 줄로 처리할 수 있어 코드를 더욱 간결하게 만들 수 있다. 동일한 결과를 반환해야 하는 여러 조건을 나열할 수 있다.

fun checkNumberType(num: Int) {
    when (num) {
        0, 1 -> println("특수 숫자")
        in 2..10 -> println("작은 숫자")
        else -> println("큰 숫자")
    }
}

→  0과 1은 한 줄로 처리되며, 범위와 함께 다른 조건도 간결하게 작성된다.

 

▷조건식으로 활용

when은 단순히 값 비교에만 국한되지 않고, 조건식을 사용할 수 있어 복잡한 조건도 처리할 수 있다.

fun checkNumberSign(num: Int) {
    when {
        num > 0 -> println("양수입니다.")
        num < 0 -> println("음수입니다.")
        else -> println("0입니다.")
    }
}

→ 값이 아닌 조건식을 사용한 when 예시로, 각 조건이 참일 때 해당 블록이 실행되고, 마지막 else는 모든 조건에 해당하지 않을 때 실행된다.

 

코틀린의 when은 단순한 조건문을 넘어서, 값 비교, 타입 검사, 범위 검사 등 다양한 조건을 처리할 수 있는 도구이다. 특히 when은 표현식으로 사용될 수 있어, 조건에 따라 값을 반환하는 용도로도 매우 유용하다. 또한, 여러 조건을 한 줄에 나열할 수 있어 코드를 간결하게 만들고, 조건식을 사용할 수 있어 복잡한 조건도 쉽게 처리할 수 있다. 코틀린의 when 표현식을 적절히 사용하면 조건문을 더 간결하고 직관적으로 작성할 수 있으며, 가독성을 크게 높일 수 있다.