더북(TheBook)

코틀린에서는 어느 문장 앞에든 레이블을 붙일 수 있지만, breakcontinue에는 구체적으로 루프 앞에 붙은 레이블만 사용할 수 있다. 그렇지 않으면 컴파일러가 오류를 보고한다. 레이블 이름은 배열이나 함수와 마찬가지로 임의의 식별자가 될 수 있다.

자바 vs. 코틀린 코틀린과 자바는 레이블 정의와 사용 문법이 다르다.

loop@ while(true) break@loop // 코틀린
loop: while(true) break loop // 자바

레이블을 사용하면 (레이블을 사용하는 다른 경우도 있지만) breakcontinuewhen 식 안에서 쓰면서 제어를 옮길 대상 루프를 지정할 수 있다. 이로 인해 앞 절에서 살펴본 수 추측 프로그램을 다음과 같이 작성할 수 있다.

import kotlin.random.*

fun main() {
  val num = Random.nextInt(1, 101)
  
  loop@ while (true) {
    val guess = readLine()!!.toInt()
    
    val message = when {
      guess < num -> "Too small"
      guess > num -> "Too big"
      else ->break@loop // 정상
    }
    println(message)
  }
  println("Right: it's $num")
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.