자바를 사용해본적은 없지만 자바와 마찬가지로 코틀린은 가변 인자를 지원한다. 가변 인자를 사용하면 함수를 호출할 때 인자 개수를 유동적으로 지정할 수 있다. 즉, 가변 인자는 개수가 정해지지 않은 인자를 말한다.
인자 앞에 vararg를 사용하면 된다.
fun main() {
val a1 = sum(1)
val a2 = sum(1, 2, 3, 8)
println(a1)
println(a2)
}
fun sum(vararg num: Int) = num.sum()
fun printString(vararg strings : String): Unit {
for (string in strings) {
println(string)
}
}
fun main() {
printString("vararg1")
printString("vararg1", "vararg2")
printString("vararg1", "vararg2", "vararg3")
}
가변인자를 사용할 때, 꼭 가변인자만 사용해야 하는 것은 아니다. 일반 인자와 섞어 쓸 수 있다.
fun printString(title: Sting, vararg strings: String): Unit {
println(title)
for(strig in strings){
println(string)
}
}
fun main() {
printString("Title", "varargs1", "varargs2")
}
이미 존재하는 스트링 배열을 가변인자로 넘겨야 할때가 있을수도 있다. 배열 이름 앞에 *
을 붙여주면 배열이 가변인자로 취급되어 전달된다.
fun printString(vararg strings : String): Unit {
for (string in strings) {
println(string)
}
}
fun main() {
val strings = arrayOf("vararg1", "vararg2", "vararg3")
}
참고