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]20241015 if-else 표현식 본문

Kotlin

[TIL]20241015 if-else 표현식

최밤빵 2024. 10. 15. 21:57

코틀린에서는 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