밤빵's 개발일지
[TIL]20241015 if-else 표현식 본문
코틀린에서는 if가 문(statement)이 아닌 표현식(expression)으로 사용될 수 있다. 자바에서는 if가 단순히 조건에 따라 명령을 실행하는 문이지만, 코틀린에서는 if가 값을 반환할 수 있는 표현식으로도 사용될 수 있다. 이 기능은 코드의 간결성을 높이고, 조건에 따라 값을 반환하는 로직을 좀 더 직관적으로 작성할 수 있도록 돕는다.
▶if-else 문과 표현식의 차이
우선 자바에서의 if-else는 문(statement)로서 조건을 만족하는지에 따라 특정 명령을 실행한다. 반면, 코틀린에서 if-else는 표현식(expression)이기 때문에 조건에 따라 값을 반환할 수 있다.
▷자바의 if-else 문
int max;
int a = 10;
int b = 20;
if (a > b) {
max = a;
} else {
max = b;
}
→ 위 자바 코드에서는 a와 b의 값을 비교한 후, 큰 값을 max 변수에 할당한다. 자바에서는 if-else가 명령을 실행하는 문으로 동작하기 때문에, 조건에 따라 값을 할당하려면 명령문으로 작성해야 한다.
▷코틀린의 if-else 표현식
val a = 10
val b = 20
val max = if (a > b) {
a
} else {
b
}
→ 코틀린에서는 if-else가 표현식이므로, 조건을 만족하는 값 자체를 반환할 수 있다. 위 코드를 보면, if (a > b)에서 조건이 만족하면 a가 반환되고, 그렇지 않으면 b가 반환된다. 그리고 그 결과가 max 변수에 바로 할당된다. 자바 코드보다 훨씬 간결하고, 코드를 읽는 사람이 쉽게 이해할 수 있다.
▶if-else 표현식의 값 반환 방식
코틀린의 if-else 표현식은 단순히 조건을 확인하는 것 외에도, 값 자체를 반환할 수 있기 때문에 반환될 값을 여러 줄에 걸쳐서 처리할 수 있다. 코틀린에서 마지막 줄의 값이 표현식의 결과로 반환된다.
val a = 30
val b = 40
val max = if (a > b) {
println("a가 더 큽니다.")
a // 이 값이 반환됨
} else {
println("b가 더 큽니다.")
b // 이 값이 반환됨
}
println("최대값: $max")
→ if (a > b) 조건이 참이면 "a가 더 큽니다."를 출력하고 a 값을 반환한다. 그렇지 않으면 "b가 더 큽니다."를 출력하고 b 값을 반환한다. 즉, if-else 블록 안의 마지막 줄이 최종 결과로 반환되어 max 변수에 할당된다.
이처럼 여러 줄의 명령을 작성해도, 마지막 줄의 값이 반환되기 때문에 유연하게 값을 처리할 수 있다.
▶else가 없는 if 표현식
코틀린의 if-else 표현식에서 else가 생략된 경우에는 반환값이 Unit 타입이 된다. 자바의 void와 유사한 방식으로 동작하여 값을 반환하지 않는 경우.
val a = 50
val b = 60
val result = if (a > b) {
println("a가 더 큽니다.")
}
println("결과: $result") // 결과: kotlin.Unit
→ if (a > b) 조건이 거짓이므로, 아무것도 출력되지 않고, result 변수에는 Unit이 할당된다. 따라서 else 구문을 반드시 포함하지 않아도 되지만, 값을 반환하고자 한다면 반드시 else 구문을 포함해야 한다.
▶ 중첩된 if-else 표현식
코틀린에서는 여러 조건을 확인해야 할 경우 중첩된 if-else 표현식을 사용할 수 있다. 이는 자바에서의 else if와 유사한 방식으로 동작한다.
val number = 15
val result = if (number < 10) {
"10보다 작다"
} else if (number in 10..20) {
"10 이상 20 이하이다"
} else {
"20보다 크다"
}
println(result) // 출력: 10 이상 20 이하이다
→ number의 값이 10보다 작은지, 10과 20 사이에 있는지를 확인한다. 조건에 따라 알맞은 문자열을 반환하여 result 변수에 할당한다. 이처럼 여러 조건을 처리할 때도 if-else 표현식을 사용할 수 있으며, 조건에 맞는 값을 반환할 수 있다.
▶삼항 연산자와의 차이
코틀린에서는 자바의 삼항 연산자(?:)가 존재하지 않는데, 그 이유는 if-else 표현식이 이미 그 역할을 충분히 대체할 수 있기 때문이다.
▷ 자바의 삼항 연산자
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
→ 삼항 연산자를 사용하여 a와 b 중 더 큰 값을 max에 할당한다.
▷ 코틀린의 if-else 표현식
val a = 10
val b = 20
val max = if (a > b) a else b
→ 코틀린에서는 삼항 연산자 없이도 간결하게 동일한 기능을 구현할 수 있다. 즉, if-else 표현식이 삼항 연산자의 역할을 대신하며, 코드를 간결하고 직관적으로 작성할 수 있게 한다.
코틀린에서 if-else는 단순한 조건문이 아닌 표현식으로 사용되어, 값을 반환하고 변수에 할당할 수 있는 기능을 제공한다. 자바보다 훨씬 간결하고 직관적인 코드를 작성할 수 있고, 특히, 여러 조건을 처리하거나 삼항 연산자와 같은 역할을 대체할 수 있는 점에서 유용하다.
'Kotlin' 카테고리의 다른 글
[TIL]20241017 const (0) | 2024.10.17 |
---|---|
[TIL]20241016 정규표현식(Regex) (0) | 2024.10.16 |
[TIL]20241014 is & as 연산자 (0) | 2024.10.14 |
[TIL]20241013 스마트캐스팅(Smart Casting) (0) | 2024.10.13 |
[TIL]20241012 when 표현식 (0) | 2024.10.12 |