[Kotlin] 가변 인자(vararg) 사용하기, 배열을 가변 인자로 넘기기
2020. 7. 31. 20:16
Variable number of arguments
자바와 마찬가지로 코틀린은 가변 인자를 지원한다. 가변 인자를 사용하면 함수를 호출할 때 인자 개수를 유동적으로 지정할 수 있다. 사용하려면 인자 앞에 vararg
를 붙이면 된다.
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
References
'if (study) > Java & Kotlin' 카테고리의 다른 글
코틀린을 다루는 기술 7장 정리 - 오류와 예외 처리하기 (0) | 2020.07.31 |
---|---|
코틀린을 다루는 기술 6장 정리 - 선택적 데이터 처리하기 (0) | 2020.07.24 |
코틀린을 다루는 기술 5장 정리 - 리스트로 데이터 처리하기 (0) | 2020.07.18 |