포스트

Kotlin의 반복문 다루기


향상된 for문 (for-each문)


  • 숫자가 있는 리스트나 배열같은 하나씩 출력하는 경우 주로 사용


for each문 예제

1
2
3
4
5
    val numbers = listOf(1L, 2L, 3L)

    for (number in numbers) {
        println(number)
    }

Java와 다른 점

  • 컬렉션을 만드는 방법 : listOf(1L, 2L, 3L) => 추후 추가 설명 예정
  • :대신 in을 사용

Java와 공통점

  • numbers에 오는 타입은 Iterable이 구현된 타입이라면 모두 가능




전통적인 for문


for문 예제

1
2
3
    for(i in 1..3){
        println(i)
    }

..은 범위를 나타내는 연산자
위에서 1..31 ~ 3까지를 뜻 한다.


for문 내려가는 예제

1
2
3
    for(i in 3 downTo 1){
        println(i)
    }

..대신 downTo를 사용하여 3 부터 1까지 내려가는 반복을 수행


for문 정해진 만큼 올리는 경우 예제

1
2
3
    for(i in 1..5 step 2) {
        println(i)
    }

in..을 이용해서 1 ~ 5까지 반복 시키고 step으로 2개씩 증가 하도록 지정




Progression과 Range


  • 동작 원리
    • ..연산자는 범위를 만들어 내는 연산자
    • IntRange라는 실제 class에서 IntProgression (등차수열)을 상속 받는다


  • rangeTo img.png


  • IntRange img.png


  • IntProgression
    • 시작 값
    • 끝 값
    • 공차
      • 위와 같은 3개의 변수가 필요하다.
      • 결국 등차 수열을 만들어 주는 것 img.png


  • 3 downTo 1 : 시작 값 3 / 끝 값 1 / 공차 -1인 등차 수열
  • 1..5 step 2 : 시작 값 1 / 끝 값 5 / 공차 2인 등차 수열


downTo와 step은 함수!!


  • 두개 모두 중위 함수 다음에 다룰 예정
    • 변수.함수이름(argument) 대신
    • 변수 함수이름 argument로 사용할 수 있도록 해주는 것


  • step
    1
    2
    3
    4
    
    public infix fun IntProgression.step(step: Int): IntProgression {
      checkStepIsPositive(step > 0, step)
      return IntProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)
    }
    


  • downTo
    1
    2
    3
    
    public infix fun Int.downTo(to: Int): IntProgression {
      return IntProgression.fromClosedRange(this, to, -1)
    }
    




while문


  • while문 예제
    1
    2
    3
    4
    5
    
      var i = 1
      while (i <= 3){
          println(i)
          i++
      }
    

    Java와 같은 방식으로 작성

  • do-while또한 같다
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.