코틀린 학습 기록
반복문 처리(Expressions for Loops)
1. For 문으로 처리
for loop는 iterator를 제공하는 모든 것을 반복하여 처리 할 수 있다. 이것은 C#의 foreach문, 그리고 java의 foreach style의 for문과 동일하다.
문법은 다음과 같다.
1
|
for (item in collection) print(item)
|
cs |
물론 안에 block으로 처리할 수도 있다.
1
2
3
|
for (item: Int in ints) {
// ...
}
|
cs |
for 문으로 처리하기 위해서는 iterator의 다음 함수가 정의되어 있어야 동작한다.
(아래 3개의 함수에 대해서는 반드시 operator 라고 별도로 명시까지 되어있어야 한다.)
- 지정된 자료형으로 리턴 하며, 멤버 함수나 확장함수인 iterator()
- 멤버 함수나 확장함수인 next()
- Boolean 형으로 리턴하며, 멤버 함수나 확장함수인 hasNext()
숫자 범위를 반복하려면 range expression을 사용한다.
1
2
3
4
5
6
7
|
for (i in 1..3) {
println(i)
}
for (i in 6 downTo 0 step 2) {
println(i)
}
|
cs |
** range expression이란?
.. 연산자로 동작시키며 rangeTo 함수 형식을 가지고 있어야 한다. 통합 type range인 IntRange, LongRange, CharRange에서는 추가 오버헤드 없이 반복문을 동작시킬 수 있다.
1
2
3
|
for (i in 1..4) print(i) // 1234를 출력
for (i in 4..1) print(i) // 아무것도 출력되지 않는다.
|
cs |
만약 역순으로 구하고 싶다면 downTo()를 이용한다.
1
|
for (i in 4 downTo 1) print(i) // 4321로 출력
|
cs |
또한 1이 아닌 일정 간격으로 동작시키고 싶다면 step()을 이용한다.
1
2
3
|
for (i in 1..4 step 2) print(2) // 13이 출력됨
for (i in 4 downTo 1 step 2) print(2) // 42가 출력됨
|
cs |
그리고 맨 끝의 요소를 포함시키지 않는 범위로 동작시키고 싶다면 until()을 이용한다.
1
|
for (i in 1 until 10) print(i) // i는 [1, 10) 이다. 즉 10은 제외된다.
|
cs |
더 자세한 내용은 추후 언급하거나 아래의 링크를 참고하면 될 것 같다.
범위 또는 배열 기반의 for loop는 iterator 객체를 만들지 않는, index 기반의 loop로 컴파일되어 동작한다.
1
2
3
4
5
|
// 인덱스가 있는 배열이나 목록을 반복할 경우에는 이렇게 사용
for (i in array.indices) println(array[i])
// withIndex()를 이용하면 이렇게 하는것도 가능
for ((index, value) in array.withIndex()) println("the element at $index is $value")
|
cs |
2. While문으로 처리
while과 do-while은 대개 다음과 같이 처리한다.
1
2
3
|
while (x < 0) {
x--
}
|
cs |
1
2
3
|
do {
val y = myfunc()
} while (y != null) // y를 여기서도 활용할 수 있다.
|
cs |
참고 URL:
'[Developer] > Kotlin' 카테고리의 다른 글
Ktor Client로 Kotlin HTTP 통신하기(1/2) (2) | 2021.07.15 |
---|---|
[코틀린 멀티플랫폼] 첫 번째 멀티플랫폼 앱 만들기 (0) | 2021.04.16 |
[코틀린 멀티플랫폼] 시작/초기설정하기 (0) | 2021.04.15 |
코틀린 기본 문법 :: 조건문 표현 (0) | 2018.04.25 |
댓글