Varargs

Variable Number of Arguments

Example

vararg lets a function take any number of values. Inside the function it is an array.

fun total(vararg prices: Int): Int {
    var sum = 0
    for (p in prices) sum += p
    return sum
}

fun printTags(title: String, vararg tags: String) {
    println("$title: ${tags.joinToString(", ")} (${tags.size} tags)")
}

fun main() {
    println(total())
    println(total(120))
    println(total(120, 80, 45, 30))
    printTags("Paneer Tikka", "veg", "spicy", "bestseller")
}

Output

0
120
275
Paneer Tikka: veg, spicy, bestseller (3 tags)

Spread Operator

Example

To pass an existing array to a vararg, put * in front of it (the spread operator).

fun total(vararg prices: Int): Int = prices.sum()

fun main() {
    val cart = intArrayOf(250, 120, 99)
    println(total(*cart))
    println(total(40, *cart, 10))   // mix values and an array
}

Output

469
519