728x90
repeat
코틀린 표준 라이브러리에는 두 가지 버전의 repeat 함수가 있다.
- 반복 횟수를 지정하여 람다식을 수행하는 repeat
- 반복 횟수를 지정하여 문자열을 연결하는 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