더북(TheBook)

자바 vs. 코틀린 코틀린의 for 루프는 Iterable 인스턴스에 대한 루프를 간편하게 작성하도록 해주는 자바 for-each 루프와 꽤 비슷하다. 배열, 리스트, 집합은 Iterable에 속하며, 사용자가 정의한 타입도 Iterable을 상속할 수 있다. 하지만 코틀린에는 선언, 초기화, 검사 및 갱신으로 구성되는 일반 자바 for 루프에 해당하는 언어 구조가 없다. 코틀린에서는 앞에서 살펴본 while 루프로 이런 루프를 표현하거나, 범위와 진행을 사용하는 for 루프를 통해 표현할 수 있다.

for 루프를 사용해 문자열의 각 문자에 대한 루프를 수행할 수도 있다. 예를 들어 이진 양수를 표현하는 문자열을 Int로 파싱하는 함수를 직접 작성한다고 가정하자.

fun parseIntNumber(s: String, fallback: Int = -1): Int {
  var num = 0
  
  if (s.length !in 1..31) return fallback
  
  for (c in s) {
    if (c !in '0'..'1') return fallback
    num = num*2 + (c - '0')
  }
  return num
}

파싱할 문자열이 올바른 2진수 형태가 아니라면 이 함수는 fallback 값을 반환한다.

자바 vs. 코틀린 자바에서는 문자열의 각 문자에 대해 루프를 직접 수행할 수 없다. 따라서 인덱스를 사용한 루프를 돌거나, 문자열을 문자 배열로 바꾸는 등의 대안을 사용해야 한다.

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