밤빵's 개발일지
[TIL]20241012 when 표현식 본문
코틀린을 공부하면서 조건문을 처리하는 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 표현식을 적절히 사용하면 조건문을 더 간결하고 직관적으로 작성할 수 있으며, 가독성을 크게 높일 수 있다.
'Kotlin' 카테고리의 다른 글
[TIL]20241014 is & as 연산자 (0) | 2024.10.14 |
---|---|
[TIL]20241013 스마트캐스팅(Smart Casting) (0) | 2024.10.13 |
[TIL]20241011 자바 일반클래스& 코틀린 데이터클래스 (0) | 2024.10.11 |
[TIL]20241010 데이터 클래스(Data Class) (0) | 2024.10.10 |
[TIL]20241009 Extension Functions (0) | 2024.10.09 |