반응형
코틀린에서는 다른 언어(python, C# 등)에 있는 switch / case가 없다.
대신 when을 이용하여 분기문을 만든다.
- Kotlin의 when <kotlin when (switch/case)>
1. 기본 when 분기
var classCode : Int = 101
when(classCode){
101 -> println("경영학개론")
202 -> println("거시경제학")
305 -> println("생산관리")
else -> println("과목이 없습니다.")
}
// 경영학개론
기본적 분기문이다.
C#과 형태와 방법이 다르다.
- C#과 다르게 콜론( : ) 대신에 ->를 사용한다.
- default 대신 else를 사용한다.
- default : 위의 분기중 아무것도 해당되지 않는 경우 실행되는 코드
- 다른 언어들과 달리 break를 넣지 않는다.
2. 범위를 기준으로 나누기
// Example 1
var score = 85
when(score){
in 0..40 -> println("D 학점입니다.")
in 41..70 -> println("C 학점입니다.")
in 71..90 -> println("B 학점입니다.")
in 91..99 -> println("A 학점입니다.")
else -> println("A+ 학점입니다.")
}
// B 학점입니다.
// Example 2
var classNo = 4
when(score){
1, 3, 5 -> println("A팀")
2, 4, 6 -> println("B팀")
else -> println("팀이 없습니다.")
}
// B팀
- in을 이용하여 숫자의 범위를 기준으로 삼을 수 있다.
- 0 .. 40을 입력하면 '0<= 값 <=40'의 의미가 된다.
- in 0..40, in 70..80 -> "uu" 이런 방식의 사용도 가능하다.
- 여러 케이스가 하나의 결과를 출력하는 경우 콤마(,)를 이용해서 여러가지 작성이 가능하다. (Example2)
- 자료형은 Int, String 등 여러 형태가 가능하다.
3. 간단하게 분기 결과 얻기 (실전 사용편)
// Example 1
var score = 85
var grade = ""
when(score){
in 0..40 -> grade = "D 학점입니다."
in 41..70 -> grade = "C 학점입니다."
in 71..90 -> grade = "B 학점입니다."
in 91..99 -> grade = "A 학점입니다."
else -> grade = "A+ 학점입니다."
}
println(grade)
// B 학점입니다.
// Example 2
var score2 = 85
var grade2 = when(score2){
in 0..40 -> "D 학점입니다."
in 41..70 -> "C 학점입니다."
in 71..90 -> "B 학점입니다."
in 91..99 -> "A 학점입니다."
else -> "A+ 학점입니다."
}
println(grade2)
// B 학점입니다.
- 다른 언어의 switch와 달리 when은 반환값이 있다.
- 위의 example1은 C#과 같은 방식으로 grade에 출력할 값을 입력했다.
- kotlin은 example2처럼 분기 후 when의 return값을 바로 정할 수가 있다.
따라서 별다른 ' grade = "내용" '이 필요 없이 그냥 "내용"을 입력하면 바로 grade2에 값이 할당된다.
반응형
'안드로이드 앱 만들기 > 코틀린 기초' 카테고리의 다른 글
코틀린 lateinit, lazy (변수 초기값 나중에 작성하기) (6) | 2024.11.04 |
---|---|
코틀린의 static, companion (0) | 2024.11.04 |
코틀린의 array, list, set, map 차이 비교 (0) | 2024.11.04 |