프로그래밍 언어/Kotlin

[Kotlin] 코틀린 For문(indices)/ While문 (코틀린 공홈 까보기)

코딩하는흑구 2020. 6. 17. 00:55
for 반복문

소스코드 예제

fun forLoop(){
    println("[for] 반복문")
    val items = listOf("apple", "banana", "kiwi")
    
    // A
    for(item in items) {
        println(item)
    }
    // B
    for(index in 0..(items.size-1)) {
        println("이건 item at $index is ${items[index]}")
    }
    // C
    for(index in 0 until items.size) {
        println("이건 item at $index is ${items[index]}")
    }
    // D
    for(index in items.indices) { //indices -> 0..2
        println("item at $index is ${items[index]}")
    }
}

- listOf는 자바의 Arrays.asList() 함수처럼 String 값들을 배열로 만들어주는 함수입니다.

- A의 형태는 익히 알고계시겠지만 자바의 향상된 Foreach문처럼 items 객체를 하나씩 item에 담아서 도는 for문.

- B의 형태는 0부터 items의 size-1 즉 마지막 인덱스까지 루프를 돌리는 것이다. 실제로 별로 좋은 모습은 아니어서  아래로 변형하여 쓴다.

- C의 형태는 0부터 size까지 즉, B타입의 표현이 어색하기 때문에 until이라는 키워드를 붙인 것이다. 하지만 이 역시 아래의 D 표현으로 사용되는걸 권장한다.

- D의 형태에서 list는 indices라는 IntRange 타입의 값을 반환하는데 0..2 가 들어있다. 즉, items의 최소인덱스..최대인덱스 이다.

- 특별한 키워드를 따로 쓸 필요없이 indices를 제공하므로 in절에다가 써주면 단순 포문처럼 돌아간다.

 


while 반복문
fun whileLoop() {
    println("[while] 반복문")
    val items = listOf("apple", "banana", "kiwi")
    
    var index = 0
    while(index < items.size) {
        println("item at $index is ${items[index]}")
        index++
    }
}

- while문은 별다른 문법이 없이 모든언어가 좀 비슷한 모양인것 같다. for문에서는 이런 저런 키워드들이 많았는데 아직 코틀린 공홈의 Getting Started만 봐서 그런지 심플했다.

- 단순히 루프변수를 size와 비교하여 index out 할 경우 탈출한다. 마찬가지로 index로 리스트의 요소에 접근한다.