◎ 조건문
1) if
조건문 if는 다른 프로그래밍 언어에서 많이 접한 것과 동일하다. 형태는 다음과 같다.
if (조건식) {
참일 경우에 실행할 부분
}
조건문을 괄호로 감싸야지 오류가 나지 않는 것에만 유의하면 된다.
1-1) if ~ else, if ~ else if ~ else
if ~ else 문도 다른 프로그래밍 언어에서와 동일하다. 하나의 조건식에 대해 참과 거짓의 두 경우만을 다룰 때에 사용한다. 형태는 다음과 같다.
if (조건식) {
참일 경우에 실행할 부분
} else {
거짓일 경우에 실행할 부분
}
만약 조건식을 여러개 두고자 한다면 if ~ else if ~ else 문을 사용하면 된다. else if의 수에는 제한이 없다. if ~ else if ~ else 문의 형태는 다음과 같다.
if (조건식1) {
조건식1이 참일 경우에 실행할 부분
} else if (조건식2) {
조건식2가 참일 경우에 실행할 부분
} else {
그 외의 경우에 실행할 부분
}
1-2) if 문을 표현식으로 사용하기
if문은 표현식으로도 사용이 가능하다. 코틀린에서는 삼항 연산자가 없는데 이 대신에 if문을 표현식으로 사용 가능한 것이다. 형태는 다음과 같다.
val 변수 = if (조건식) {
참일 경우에 할당할 값
} else {
거짓일 경우에 할당할 값
}
2) when
조건문 when은 다른 프로그래밍 언어의 switch 문의 역할을 한다. 특정 변수의 값을 기준으로 실행할 여러 경우를 나누어 코딩하는 것이다. 형태는 다음과 같다.
when (변수) {
값1 -> {
'변수 == 값1' 일 때 실행할 부분
}
값2 -> {
'변수 == 값2' 일 때 실행할 부분
}
else -> {
그 외의 경우에 실행할 부분
}
}
if 문에서 '조건식'을 괄호로 감싸는 것과 동일하게 when 문에서는 '변수'를 괄호로 감싸주어야 오류가 발생하지 않는다.
만약 특정 값에 대해 처리할 내용이 동일하다면 콤마(,)로 구분하여 작성할 수 있다.
값의 범위가 연속적인 경우에는 in 연산자를 사용하여 범위를 지정할 수 있다.
when 문에서 어느 부분을 실행할 지 결정하는 기준이 되는 '변수'를 생략하고 각 실행 블록마다 각각의 조건식을 설정할 수도 있다. 위 예제를 아래와 같이 재작성해보았다.
두 조건문 if 문과 when 문 중에서 어느 것을 사용하는게 적절할까. 둘 중 무엇을 사용해도 큰 지장은 없지만 만약 값의 범위가 넓은 경우라면 when 문을 사용하여 각각의 경우에 대한 모든 실행 블록을 작성하는 것은 매우 어려운 일이므로 이때는 if 문을 사용하는 것이 더 적절하다. 반대로 요일의 경우에는 값이 7개 뿐이므로 when 문을 사용하는 것이 더 낫다.