본문 바로가기

두두의 IT

[Kotlin] 가변인자 vararg(Variable number of arguments)

728x90

가변 인자를 사용하면 함수를 호출할 때 인자 개수를 유동적으로 지정할 수 있다.

fun sum(vararg num: Int) = num.sum()

fun main(args: Array<String>) {
    val n1 = sum(1)
    val n2 = sum(1, 2, 3, 4, 5)
    println(n1) // 1
    println(n2) // 15
}

 

배열을 가변인자로 넘기기

이미 존재하는 배열을 vararg 함수의 인자로 넘겨야할 때가 있다.

이 경우 배열 이름 앞에 *(spread operator)를 붙여주면 된다.

C/C++의 포인터와 다름

fun showAll(vararg s: String) {
    println(s.joinToString())
}

fun main(args: Array<String>) {
    val test = arrayOf("A", "B")
    showAll(test) // error
    showAll(*test) // OK
}

만약 vararg 파라미터가 제네릭 타입일 경우, *을 생략해도 Array<out T> 타입은 인자로 받아들일 수 있다.

fun <T> asList(vararg ts: T): List<T> {
    val result = ArrayList<T>()
    for (t in ts) // ts is an Array
        result.add(t)
    return result
}

val a = arrayOf(1, 2, 3)
val list1 = asList(a) // OK
val list2 = asList(-1, 0, *a, 4) // OK

'두두의 IT' 카테고리의 다른 글

Windows 기본 상식  (0) 2022.04.22
[Kotlin] Infix 함수  (0) 2022.04.12
[Kotlin] Inline 함수  (0) 2022.04.12
[Kotlin] data Class  (0) 2022.04.12
[Kotlin] Modifiers  (0) 2022.04.12