Jakorithm
article thumbnail
728x90

repeat

코틀린 표준 라이브러리에는 두 가지 버전의 repeat 함수가 있다.

  1. 반복 횟수를 지정하여 람다식을 수행하는 repeat
  2. 반복 횟수를 지정하여 문자열을 연결하는 repeat

 

람다식을 수행하는 repeat

람다식을 수행하는 repeat 함수는 특정 횟수만큼 지정된 람다 표현식을 반복하여 실행한다.

@kotlin.internal.InlineOnly
public inline fun repeat(times: Int, action: (Int) -> Unit) {
    contract { callsInPlace(action) }

    for (index in 0 until times) {
        action(index)
    }
}

위 함수는 다음과 같은 특징을 가진다.

  • 인라인 함수로만 사용 가능하다.
  • 람다 표현식을 통해 반복 작업을 수행한다.
  • Contract를 활용하여 적절한 방식으로 호출되는지 검증한다.
  • 반복 횟수와 반복할 작업을 간결하게 표현할 수 있다.

 

이 함수는 다음과 같이 사용할 수 있다.

fun main() {
    val num = 5

    repeat(num) {
        println("num = $num, index = $it")
    }
}
// 출력
num = 5, index = 0
num = 5, index = 1
num = 5, index = 2
num = 5, index = 3
num = 5, index = 4

 

  • repeat 함수의 괄호 안에 Int 타입의 숫자를 지정하여 반복할 횟수를 지정한다.
  • 중괄호 블록 안에 처리할 코드를 작성한다.
  • it 키워드를 통해 현재 반복 중인 인덱스를 사용할 수 있다.

 

문자열을 연결하는 repeat

문자열을 연결하는 repeat은 문자열을 특정 횟수만큼 반복하여 연결한다.

public actual fun CharSequence.repeat(n: Int): String {
    require(n >= 0) { "Count 'n' must be non-negative, but was $n." }

    return when (n) {
        0 -> ""
        1 -> this.toString()
        else -> {
            when (length) {
                0 -> ""
                1 -> this[0].let { char -> String(CharArray(n) { char }) }
                else -> {
                    val sb = StringBuilder(n * length)
                    for (i in 1..n) {
                        sb.append(this)
                    }
                    sb.toString()
                }
            }
        }
    }
}

위 함수는 다음과 같은 특징을 가진다.

  • actual 키워드를 통해 다중 플랫폼 프로젝트에서 실행할 수 있다.
  • 주어진 횟수만큼 문자열을 반복하여 새로운 문자열을 생성한다.
  • 주어진 횟수가 0보다 작은 경우에 대한 예외 처리를 수행한다.
  • StringBuilder를 사용하여 문자열을 효율적으로 처리한다.

 

이 함수는 다음과 같이 사용할 수 있다.

fun main() {
    val num = 3
    val str = "kotlin"

    println(str.repeat(num))
}
// 출력
kotlinkotlinkotlin
  • repeat 함수 앞에 반복할 문자열을 지정하고, 매개 변수에 반복할 횟수를 지정하여 사용한다.
728x90