kotlin에서 특정 조건을 만족하는지 판단해 분기별로 나누는 방식에는 if와 when 두 가지가 있다.
조건문 if
먼저, if에 대해 보자.
c,c++,java와 같은 언어들에서와 마찬가지로, 문법과 사용 방식이 똑같다.
if([조건]){
// 조건에 따른 실행부
}
다만, 다른 언어들과 조금 다른부분이 있는데, 바로 if문이 표현식으로 쓰일 수 있다는 것이다.
예를 들어,
println(if (a > b) a else b)
와 같은 표현이 가능하다.
마찬가지로, if문 안의 조건식에도 if문을 작성할 수 있다.
if (if (a == b) a else b) {
d = 1
} else {
d = 2
}
이런 식으로 표현 가능하다.
그렇기 때문인지 'condition? then : else' 와 같은 삼항 연산자는 사용 불가능하다.
조건문 when
단 두 개의 갈래로만 나뉘었던 if와는 달리, when은 여러 분기로 나눌 수 있다.
(kotlin에서는 if보다는 when 사용을 권장한다고 한다!)
c,c++,java에서 쓰이는 switch-case 문과 유사한데,
switch-case 문이 다음과 같이
switch([변수]){
case [값] :
// expression
break;
case [값] :
// expression
break;
...
default :
}
쓰이는데, Kotlin에서 when 문도 거의 유사하게 나타난다.
when 문 옆에 변수를 적고,
해당 변수의 값에 따라 expression을 적는 방식이다.
코드로 나타내면 다음과 같다.
when([변수]){
[값1] -> // expression
[값2] -> // expression
...
else -> // expression
}
여기서는 case 와 : 대신 ->를 사용한다.
또한, default 대신 else를 사용한다.
switch case 문과는 다르게 when 문은 다음과 같이 조건문들의 집합으로도 표현할 수 있다.
when{
[조건1] -> // expression
[조건2] -> // expression
...
else -> // expression
}
switch case 문에서는 break를 통해 어떤 조건이 실행됐을 때 어디까지 실행하고 멈출지를 정할 수 있었다.
반면에 when은 그런 장치가 없는데, 동작 구조가 약간 다르기 때문이다.
when 문에서는 순차적으로 모든 조건을 체크하고, 제일 먼저 만나게 되는 참값에 대해 실행하고 끝나는 방식이어서 break가 필요치 않다.
when도 if와 마찬가지로 표현식으로 쓰일 수 있다.
val result = when(obj){
...
}
이렇게 바로 변수에 값을 할당할 수도 있고,
위에서 말한 것처럼 조건식을 사용해 다음과 같이 표현 가능하다.
val res = when{
cond < 0 -> "res1"
cond < 3 -> "res2"
...
else -> "err"
}
이렇게 when 문을 표현식으로 사용해 바로 변수에 할당할 때는 반드시 else를 써야만 한다.
'CS > Kotlin' 카테고리의 다른 글
[Kotlin 문법] 6. 함수 - Unit, default parameter value, single-expression, named argument (2) | 2024.06.07 |
---|---|
[Kotlin 문법] 5. loop - range, for, while (0) | 2024.06.07 |
[Kotlin 문법] 3. Collection 자료구조 (2) | 2024.06.05 |
[Kotlin 문법] 2. 변수 type 지정하기 (0) | 2024.06.05 |
[Kotlin 문법] 1. 함수와 변수 - fun과 val, var (1) | 2024.06.04 |