반응형

코틀린에서는 다른 언어(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에 값이 할당된다.
반응형

+ Recent posts