[Kotlin] 5-3. 범위

범위

범위(range) 식은 연산자 형식이 .. 인 rangeTo 함수로 구성한다. .. 은 in과 !in 을 보완한다. 모든 비교가능한 타입에 대해 범위를 정의할 수 있는데, 정수 기본 타입의 경우 구현을 최적화한다. 다음은 범위의 사용 예이다

if(i in 1..10) {  // 1 <= i && i <= 10과 동일
  println(i)
}

정수 타입 범위( IntRange , LongRange , CharRange )는 반복할 수 있는 추가 특징이 있다. 컴파일러는 추가 오버헤드없이 정수 타입 범위를 동일한 자바의 인덱스 기반 for루프로 변환한다:

for (i in 1..4) print(i)	//	"1234" 출력
for (i in 4..1) print(i)	//	아무것도 출력하지 않음

숫자를 역순으로 반복하려면? 간단하다. 표준 라이브리에 있는 downTo() 함수를 사용하면 된다

for(i in 4 downTo 1) print(i)  // "4321" 출력

1씩 간격이 아닌 다른 간격으로 숫자를 반복할 수 있나? 물론 가능하다. step()을 사용하면 된다

for(i in 1..4 step 2) print(i)  // "13" 출력
for(i in 4 downTo 1 step 2) print(i)  // "42" 출력

마지막 요소를 포함하지 않는 범위를 생성하려면 until함수를 사용한다

for(i in 1 until 10 {  // i in [1, 10), 10은 제외
  println(i)
}