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 |