더북(TheBook)

그리고 진행의 간격을 지정할 수도 있다.

1..10 step 3         // 1, 4, 7, 10
15 downTo 9 step 2   // 15, 13, 11, 9

진행의 간격은 양수여야 한다. 그래서 방금 본 예제처럼 downTostep으로 진행을 만들 때도 양수를 써야 한다.

진행의 원소는 시작 값에 간격을 연속적으로 더해서 만들어진다. 따라서 실제로는 끝 값이 진행에 속한 원소가 아닐 수도 있다. 이런 경우에는 자동으로 끝 값에 가장 가까운 값까지만 진행에 속하게 된다.

1..12 step 3         // 1, 4, 7, 10: 1..10 step 3과 같음
15 downTo 8 step 2   // 15, 13, 11, 9: 15 downTo 9 step 2와 같음

범위를 사용하면 문자열이나 배열의 일부분을 뽑아낼 수 있다. subString() 함수가 닫힌 정수 범위를 받는 경우에는 두 인덱스 값을 받는 경우와 달리 끝값 위치에 있는 문자가 포함된다는 점에 유의하라.

"Hello, World".substring(1..4)                  // ello
"Hello, World".substring(1 until 4)             // ell
"Hello, World".substring(1, 4)                  // ell: substring(1 until 4)와 같음
IntArray(10) { it*it }.sliceArray(2..5)         // 4, 9, 16, 25
IntArray(10) { it*it }.sliceArray(2 until 5)    // 4, 9, 16

범위와 진행 타입은 코틀린 표준 라이브러리에 IntRange, FloatRange, CharProgression, IntProgression 등으로 정의돼 있다. kotlin.ranges 패키지에 대한 문서5를 찾아보면 범위나 진행에 관계된 모든 타입과 함수, 프로퍼티 목록을 볼 수 있다.

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