더북(TheBook)

주어진 문자열에서 영어 문자들이 몇 번씩 나오는지 수를 세고 싶다고 하자. 다음 예제에서는 배열에 접근하기 전에 문자가 영어 알파벳인지 검사한 후 그렇지 않은 경우에는 루프를 빠져나오는 continue 식을 사용한다.

fun countLetters(text: String): IntArray {
  val counts = IntArray('z' - 'a' + 1)
  
  for (char in text) {
    val charLower = char.toLowerCase()
    if (charLower !in 'a'..'z') continue
    counts[charLower - 'a']++
  }
  
  return counts
}

자바 vs. 코틀린 자바에서는 switch에서 남은 가지의 실행을 막기 위해 break를 사용하기도 한다. 하지만 코틀린 when 식은 폴스루를 사용하지 않기 때문에 코틀린 break는 자바 break와 같지 않다. 이로 인한 혼동(특히 자바를 사용하던 코틀린 개발자의 혼동)을 막기 위해 코틀린 1.4 이전에는 when 내부에서 continuebreak를 사용하는 것은 금지돼 있었다. 따라서 코틀린 1.4 미만 버전에서 수 추측 프로그램의 if 연쇄를 한 when 식으로 바꾼다면 컴파일러가 오류를 낼 것이다.

val message = when {
  guess < num -> "Too small"
  guess > num -> "Too big"
  else -> break // 1.4 이전에는 오류, 1.4부터는 정상
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.