C++과 JAVA 등에서 나타나는 삼항 연산자(condition ? then : else)는 조건문을 이용한 참, 거짓에 따른 값 반환 시 코드를 단축시켜준다는 장점이 있습니다.
// c++
int max1;
if (a > b) {max1 = a;}
else {max1 = b;}
int max2 = a > b ? a : b; // max1 == max2
그러나 코틀린은 삼항 연산자를 제공하지 않습니다. if와 else가 표현식(expression)이기 때문입니다. 이는 if와 else가 특정 값을 반환한다는 것을 의미합니다. 따라서 삼항 연산자를 사용하지 않고도 간단히 코드를 구성할 수 있습니다.
// kotlin
// Traditional usage
var max = a
if (a < b) max = b
// With else
var max: Int
if (a > b) {
max = a
} else {
max = b
}
// As expression
val max = if (a > b) a else b
만약 if와 else가 값을 반환하기 전에 어떤 연산을 수행하고 싶다면 {}를 구성해 반환값을 맨 아래에 넣고, 그 위에 코드를 넣으면 됩니다.
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
이 글은 코틀린 공식문서 Control Flow: if, when, for, while을 참고하여 작성되었습니다.