- for-each
- for
- Progression, Range
- while
반복문
for-each
1
2
3
4
val numbers = listOf(1L, 2L, 3L)
for (number in numbers) {
println(number)
}
- 컬렉션을 만드는 방법이 다르다.
- 자바의 : 대신 in을 사용한다.
- numbers 부분에는 자바와 동일하게 Iterable이 구현된 타입이라면 들어갈 수 있다.
for문
1
2
3
4
5
6
7
8
9
10
11
for (i in 1..3) {
println(i)
}
for (i in 3 downTo 1) {
println(i)
}
for (i in 1..5 step 2) {
println(i)
}
- 부등호가 대체되었다.
- downTo
- 역순
- step
- 자바의 i += 2 의 동작과 같다.
Progression과 Range
1
public operator fun rangeTo(other: Int): IntRange
코틀린의 for문에서 IntRange를 만드는 것을 볼 수 있는데 이는 IntProgression을 상속받는다.
- IntProgression: 등차수열
- 시작 값, 끝 값, 공차가 필요하다.
- downTo, step은 이러한 시작 값, 끝 값, 공차를 표현해주고 있던 것이다.
- 참고로 downTo와 step도 함수이다. (중위 호출 함수)
- x.method(y) 방식 대신 x method y 방식을 사용하게 해준 것.
while
1
2
3
4
5
var i = 1
while (i <= 3) {
println(i)
i++
}
- 자바와 완전히 동일하다.
정리
- for each문에서 자바의 : 대신 코틀린에서는 in을 사용한다.
- for문에서 코틀린은 등차수열과 in을 사용한다.
- while문은 동일하다.