ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코틀린 기본 문법 :: 반복문 표현
    [Developer]/Kotlin 2018.05.06 18:22

    코틀린 학습 기록


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





    '[Developer] > Kotlin' 카테고리의 다른 글

    코틀린 기본 문법 :: 반복문 표현  (0) 2018.05.06
    코틀린 기본 문법 :: 조건문 표현  (0) 2018.04.25

    댓글 0

Designed by Tistory.