Chapter 03. 코틀린 기본문법
3. 조건문
조건문 if
변수에 직접 if문 사용하기
if
문의 조건식 결과를 변수에 대입할 수 있다.
1
2
3
var a = 5
var b = 3
var bigger if (a > b) a else b
if문의 마지막 값을 반환값으로 사용하기
if문의 코드 영역이 여러 줄일 경우에도 마지막 줄을 변숫값으로 사용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
var eraOfRyu = 2.32
var eraOfDegrom = 2.43
val era = if (eraOfRyu < eraOfDegrom) {
Log.d("MLB_Result", "2019 류현진이 디그룸을 이겼습니다.")
eraOfRyu // 마지막 값인 goldenState에 입력되어 있는 4가 win에 대입된다.
} else {
Log.d("MLB_Result", "2019 디그룸이 류현진을 이겼습니다.")
eraOfDegrom
}
Log.d("MLB_Result", "2019 MLB에서 가장 높은 ERA는 ${era}입니다.")
실행 결과
1
2
2019 류현진이 디그룸을 이겼습니다.
2019 MLB에서 가장 높은 ERA는 2.32입니다.
문자열 템플릿: 문자열 안에서 수식 사용하기
변수가 하나인 경우에는 $변수
형태로 사용할 수 있지만, 추가적인 연산식이 필요한 경우에는 ${코드블록}
안에 수식을 입력하는 형태로 사용할 수 있다.
조건문 when
- 코들린의 when 문은 다른 언어의 switch문과 다르게 같은 값뿐만 아니라 범위의 값도 처리할 수 있고 사용법도 더 많다.
- 특정 값을 선택할 수 있는 switch 의 사용법에 if문의 범위 비교 기능이 더해진 if문의 확장판이라고 할 수 있다.
일반적인 형태의 when 사용하기
1
2
3
4
5
6
7
8
9
10
11
when (파라미터) {
비교값1 -> {
// 변수값이 비교값1과 같다면 이 영역이 실행된다.
}
비교값2 -> {
// 변수값이 비교값1과 같다면 이 영역이 실행된다.
}
else -> {
// 변수의 값이 앞에서 비교한 값과 다르면 이 영역이 실행된다.
}
}
콤마로 구분해서 사용하기
특정 값을 비교하는 데 결과 처리가 동일하다면 콤마로 구분해서 한 번에 비교할 수 있다.
1
2
3
4
5
6
7
8
when (now) {
8, 9 -> {
Log.d("when", "현재 시간은 8시 또는 9시입니다.")
}
else -> {
Log.d("when", "현재 시간은 9시가 아닙니다.")
}
}
범위 값을 비교하기
in
을 사용해서 범위 값을 비교할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
var ageOfMichael = 19
when (ageOfMichael) {
in 10..19 -> {
Log.d("when", "마이클은 10대입니다.")
}
!in 10..19 -> {
Log.d("when", "마이클은 10대가 아니다")
}
else -> {
Log.d("when", "마이클의 나이를 알 수 없습니다.")
}
}
파라미터 없는 when 사용하기
when 다음에 오는 괄호를 생략하고 마치 if문처럼 사용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
var currentTime = 6;
when {
currentTime == 5 -> {
Log.d("when", "현재 시간은 5시입니다.")
}
currentTime > 5 -> {
Log.d("when", "현재 시간은 5시가 넘었습니다.")
}
else -> {
Log.d("when", "현재 시간은 5시 이전입니다.")
}
}
if문과 when문의 차이점
- 범위가 넓고 값을 특정할 수 없을 경우에는 if문을 사용해 처리한다. ex) 연도 데이터
- 범위가 제한되고 값도 특정할 수 있을 경우에는 when문을 사용한다. ex) 요일 데이터