루프 몸통 중간에서 루프 종료 조건을 검사하기 때문에 루프의 진입 조건이 불필요해졌다. 덕분에 guess 변수를 루프 내부로 옮길 수 있다.

    자바 vs. 코틀린 return과 마찬가지로 코틀린의 break, continue 문도 Nothing 타입의 식으로 쓸 수 있다. 예를 들어 앞의 프로그램을 출력하기 전에 메시지를 계산하는 프로그램으로 다시 작성할 수도 있다.

    import kotlin.random.*
    
    fun main() {
      val num = Random.nextInt(1, 101)
      
      while (true) {
        val guess = readLine()!!.toInt()
        val message =
          if (guess < num) "Too small"
          else if (guess > num) "Too big"
          else break
        println(message)
      }
      
      println("Right: it's $num")
    }

    하지만 이런 기능을 남용하면 안 된다. 실제 더 복잡한 코드에서 이런 기능을 사용하면 코드를 이해하기 어려워질 수 있다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.