Kotlin controll

when구문

주어진 인자에 대해 다양한 조건을 만들거나 인자 없이 여러개의 조건을 구성할 수 있다. 다른 언어의 switch 구문보다 유연하게 사용 가능

fun main() {
    print("enter score: ")
    val score = readLine()!!.toDouble()
    var grade: Char = 'f'

    when(score){
        in 90.0..100.0 -> grade = 'A'
        in 80.0..89.9 -> grade = 'B'
        in 70.0..79.9 -> grade = 'C'
        else -> { // 블록 구문 사용 가능
        print("과락")
        }
    }

}

화살표 오른쪽에 사용한 수행 문장에서는 한줄인 경우에는 중괄호가 필요하지 않으며 또 switch~case에서 사용하던 break문을 사용하지 않아도 된다.

인자가 없는 when

인자가 주어지지 않으면 else if 처럼 조건을 사용하여 선언 할 수 있다.

when {
  조건[혹은 표현식] -> 실행문
  ...
}

for 구문

자바와 달리 ;나 변수를 선언하여 증감 시키지 않는다. for (요소 변수 in 컬렉션 혹은 범위) { 반복할 본문 }의 형태이다.

for (i in 5 downTo 1) print(i) downTo는 5에서 1까지 하나씩 감소한다. (하행반복)

for (i in 1..5 step 2) print(i) step 은 증가하는 단계수 설정

for (i in 0 until 5) print(i) until은 0부터 4까지 이며, 마지막 범위의 -1을 의미 한다.

break와 continue 라벨 사용

라벨을 사용하여 중단되는 위치 다시 조건문을 타는 위치를 제어할 수 있다.

fun labelBreak() {
    println("labelBreak")
    first@ for(i in 1..5) {
        second@ for (j in 1..5) {
            if (j == 3) break@first //second 반복문을 빠져나가 first 조건식으로 바로 빠져나간다.
            println("i:$i, j:$j")
        }
        println("after for j")
    }
    println("after for i")
}