4. 조건문과 제어 흐름 (if, when)
코틀린에서 if와 when은 문장(Statement)이 아니라 표현식(Expression)으로 사용할 수 있습니다. 즉, 조건문의 결과를 변수에 바로 대입할 수 있습니다.
또한 자바의 switch문은 코틀린에서 when으로 진화했습니다. break가 필요 없고, 다양한 조건을 유연하게 검사할 수 있어 가독성이 압도적으로 좋습니다.
fun main() {
// 1. 표현식으로서의 if
val a = 10
val b = 20
// if의 결과(마지막 줄)가 그대로 변수에 대입됩니다! (삼항 연산자 역할)
val max = if (a > b) {
println("a가 큽니다.")
a
} else {
println("b가 크거나 같습니다.")
b
}
println("최대값: $max")
// 2. 강력한 when 표현식 (switch 대체)
val score = 85
val grade = when {
score >= 90 -> "A" // 조건 -> 결과
score >= 80 -> "B"
score >= 70 -> "C"
else -> "F" // 모든 경우를 커버하지 않으면 컴파일 에러 발생(안전함)
}
println("당신의 학점은 $grade 입니다.")
// 값 매칭도 쉽게 가능합니다.
val obj: Any = "Hello"
when (obj) {
1 -> println("숫자 1입니다.")
"Hello" -> println("인삿말입니다.")
is String -> println("문자열 타입입니다.")
else -> println("기타 등등")
}
}