본문 바로가기
[Developer]/Kotlin

코틀린 기본 문법 :: 반복문 표현

by 해피빈이 2018. 5. 6.

코틀린 학습 기록

 

반복문 처리(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

 

 

더 자세한 내용은 추후 언급하거나 아래의 링크를 참고하면 될 것 같다.

 

http://kotlinlang.org/docs/reference/ranges.html

 

범위 또는 배열 기반의 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:

http://kotlinlang.org/docs/reference/control-flow.html

 

반응형

댓글