'제어문' 이라고도 하는데, 이는 코드의 흐름을 조건에 따라 바꿀 수 있기 때문이다.
조건문 : if , when
반복문 : for , while
var a = 30
var b = 19
var bigger = a > b
Log.d("비교 연산자", "a는 b보다 큽니다. : $bigger")
if (조건식) {
조건식이 참일 경우 실행되는 코드 영역
}
{ } 안을 코드 블록 또는 코드 스코프라고 한다.
다른 언어와는 다르게 같은 값뿐만 아니라 범위 값도 처리할 수 있고 사용 방법도 더 많다. 코틀린에서의 when 문은 특정 값을 선택할 수 있는 switch의 사용법에 if문의 범위 비교 기능이 더해진 if 문의 확장판이라고 생각하면 된다.
when(파라미터) {
비교값 -> {
// 변숫값이 비교값과 같다면 이 영역이 실행된다.
}
}
특정 값을 비교하는데 결과 처리가 동일하다면 콤마로 구분해서 한 번에 비교할 수 있다.
var now = 9
when (now) {
8, 9 -> {
Log.d("when", "현재 시간은 8시 또는 9시입니다.")
}
else -> {
Log.d("when", "현재 시간은 9시가 아닙니다.")
}
}
범위 값을 비교하기
in 을 사용해서 범위 값을 비교할 수도 있다. if 문의 비교 연산자 중 <=, >= 과 같은 기능을 구현할 수 있다.
var ageOfMichael = 19
when (ageOfMichael) {
in 10..19 -> {
Log.d("when", "마이클은 10대입니다.")
}
!in 10..19 -> {
Log.d("when", "마이클은 10대가 아닙니다.")
}
else -> {
Log.d("when", "마이클의 나이를 알 수 없습니다.")
}
}
파라미터가 없는 when 사용
var currentTime = 6
when {
currentTime == 5 -> {
Log.d("when", "현재 시간은 5시입니다.")
}
currentTime > 5 -> {
Log.d("when", "현재 시간은 5시가 넘었습니다.")
}
else -> {
Log.d("when", "현재 시간은 5시 이전입니다.")
}
}
파라미터의 범위를 특정할 수 없는 경우 if 를 쓰는게 합리적이고, 파라미터의 범위를 특정할 수 있는 경우에는 when 을 쓰는 것이 합리적이다. ( 범위를 특정할 수 없는 경우 : 연도 , 범위를 특정할 수 있는 경우 : 요일 )
범위를 특정할 수 없다는건 그만큼 비교해야 할 값이 많다는 뜻이다.