ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 조건문과 반복문
    프로그래밍 언어/Kotlin 2023. 7. 14. 04:36

    조건문

    코틀린의 조건문은 If문과 when문이 있다.

    조건문 If

    코틀린의 if문은 일반적인 프로그래밍 언어와 동일한 방식으로 동작한다.

    val a = 12
    
    if (a > 12) {
      println("large")
    } else if (a > 6) {
      println("medium")
    } else {
      println("small")
    }

    또한 변수에 직접 if문을 사용하여 마치 삼항연산자와 같이 사용할 수 있다.

    val a = 5
    val b = 10
    
    val isBigger = if (a > b) "yes is Bigger" else "$b is small"

    이때 if문의 코드 영역이 여러 줄일 경우에도 마지막 줄을 반환하여 변숫값으로 사용할 수 있다.

    val a = 5
    val b = 10
    
    val isBigger = if (a > b) {
      val c = 25
      "yes is Bigger" // 마지막 값이 isBigger에 저장
    } else {
      val sum = a + b
      "sum: $sum" // 마지막 값이 isBigger에 저장
    }

    조건문 when

    조건문 when은 다른 언어의 switch문과 거의 유사하지만, 조금 더 다양한 방법으로 활용할 수 있다.

     

    기본적인 when의 사용방법은 아래와 같다.

    when (파라미터) {
      비교값1 -> {
        // 파라미터가 비교값1과 같은 경우 실행
      }
      비교값2 -> {
        // 파라미터가 비교값2와 같은 경우 실행
      }
      else -> {
        // 파라미터가 위의 어떠한 값과도 동일하지 않으면 실행
      }
    }

    만약 특정 값을 비교하는데 결과 처리가 동일하다면 콤마를 이용해 한 번에 비교할 수 있다.

    when (파라미터) {
      비교값1, 비교값2 -> {
        // 파라미터가 비교값1 또는 비교값2와 같은 경우 실행
      }
      비교값3 -> {
        // 파라미터가 비교값3과 같은 경우 실행
      }
      else -> {
        // 파라미터가 위의 어떠한 값과도 동일하지 않으면 실행
      }
    }

    만약 범위 값을 비교하고 싶다면, in을 사용할 수 있다.

    val age = 23
    
    when (age) {
      in 10 .. 19 -> {
        // age가 10이상 19이하인 경우 실행
      }
      in 20 until 30 -> {
        // age가 20이상 30미만인 경우 실행
      }
      else -> {
        // 파라미터가 위의 어떠한 값과도 동일하지 않으면 실행
      }
    }

    when을 사용할 때 파라미터를 함께 사용하지 않는 경우, if문처럼 사용할 수 있다.

    val age = 25
    val year = 2023
    
    when {
      age == 50 -> {
        println("age 50")
      }
      age > 20 -> {
        println("adult")
      }
      year > 2020 -> {
        println("over 2020")
      }
      else -> {
        println("else")
      }
    }

    when 역시 if문처럼 삼항연산자로 사용할 수 있다. 이때 위의 모든 형태의 when을 사용할 수 있다.

    val age = 25
    val result = when (age) {
        in 10 until 20 -> "down"
        in 20 .. 30 -> "up"
        else -> "nothing"
    }

    반복문

    코틀린의 반복문은 for문과 while문이 있다.

    for 반복문

    for문의 기본적인 사용법은 아래와 같다.

    for (i in 시작값 .. 종료값) {
      println("index: $i")
    }

    이때 위의 when 조건문에서 사용한 방식과 같이 until을 사용하거나, step, downTo와 같은 키워드를 함께 사용하여 다양한 방식으로 반복을 진행할 수 있다.

    for (i in 1 .. 10) {
      // i가 1부터 10까지 반복
    }
    
    for (i in 1 until 10) {
      // i가 1부터 9까지 반복
    }
    
    for (i in 1 .. 10 step 2) {
      // i가 1부터 10까지 2씩 증가하며 반복
    }
    
    for (i in 10 downTo 1) {
      // i가 10부터 1까지 1씩 감소하며 반복
    }
    
    for (i in 10 downTo 1 step 2) {
      // i가 1부터 10까지 2씩 감소하며 반복
    }

    또는 배열, 컬렉션과 같은 iterator를 함께 사용하여 반복자의 엘리먼트를 반복하여 사용할 수 있다. 이는 Python의 for in문, JavaScript의 for of 문과 유사하다.

    val iterator = mutableListOf("MON", "TUE", "WED")
    
    for (e in iterator) {
    	println(e) // MON, TUE, WED 순으로 출력
    }

    while 반복문

    while은 특정 조건이 만족할 때까지 반복하는 반복문으로, 일반적인 while문과 동일하다.

    while (조건식) {
      // 실행 코드
    }

    만약 do와 함께 사용하여 do while문으로 사용하면, while문의 조건식에 관계없이 무조건 한 번은 반복문 스코프 내의 코드를 실행한다.

    do {
      println("무조건 한번은 실행")
    } while (false)

    반복문 제어

    for 반복문과 while 반복문 모두 반복문 내부에서 break문과 continue문을 사용할 수 있다.

    break는 반복문을 탈출하기 위해, continue는 그 아래의 코드를 실행하지 않기 위해 사용한다.

    for (i in 1 .. 10) {
      if (i > 5) break // i가 5보다 큰 경우 반복문 탈출
      println(i)
    }
    
    for (i in 1 .. 10) {
      if (i > 5) continue // i가 5보다 큰 경우 아래의 코드를 실행하지 않음
      println(i)
    }

    댓글