What if you could write one function that magically handles any number of inputs without extra work?
Why Vararg parameters in Kotlin? - Purpose & Use Cases
Imagine you want to write a function that adds numbers, but you don't know how many numbers people will give you. You try to write a function for one number, then two numbers, then three numbers, and so on.
This manual way is slow and messy. You have to write many versions of the same function, and if someone gives more numbers than you planned, your code breaks or you have to keep adding more functions.
Vararg parameters let you write one function that accepts any number of arguments. You just say "I accept many values," and Kotlin handles them as a list inside your function. This keeps your code clean and flexible.
fun add(a: Int): Int = a fun add(a: Int, b: Int): Int = a + b fun add(a: Int, b: Int, c: Int): Int = a + b + c
fun add(vararg numbers: Int): Int = numbers.sum()It lets you create simple, powerful functions that work with any number of inputs without extra code.
Think about a shopping app where you want to calculate the total price of any number of items a customer buys. Vararg lets you pass all item prices easily to one function.
Writing many functions for different numbers of inputs is hard and error-prone.
Vararg parameters let one function accept many arguments as a list.
This makes your code simpler, cleaner, and more flexible.
Practice
What does the vararg keyword do in Kotlin functions?
Solution
Step 1: Understand the purpose of
Thevarargvarargkeyword lets a function accept zero or more arguments of the same type without needing an array or list explicitly.Step 2: Compare options with this meaning
Only Allows passing a variable number of arguments to a function correctly describes this behavior, while others describe unrelated function features.Final Answer:
Allows passing a variable number of arguments to a function -> Option AQuick Check:
Vararg = variable arguments [OK]
- Thinking vararg returns multiple values
- Confusing vararg with no parameters
- Assuming vararg limits to one argument
Which of the following is the correct syntax to declare a function with a vararg parameter in Kotlin?
fun printAll(____ numbers: Int) { for (n in numbers) println(n) }Solution
Step 1: Recall the exact keyword for variable arguments
Kotlin usesvararg(singular) to declare variable number of arguments.Step 2: Check each option
Only vararg matches the correct keyword; others are incorrect or invalid syntax.Final Answer:
vararg -> Option CQuick Check:
Keyword is vararg, not varargs [OK]
- Using 'varargs' instead of 'vararg'
- Omitting the keyword entirely
- Using 'var' or 'args' which are invalid here
What is the output of this Kotlin code?
fun sumAll(vararg numbers: Int): Int { var sum = 0; for (n in numbers) sum += n; return sum }
fun main() {
println(sumAll(1, 2, 3))
println(sumAll())
}Solution
Step 1: Understand the function behavior with vararg
The function sums all integers passed. If no arguments, the loop does not run, sum stays 0.Step 2: Calculate outputs for calls
sumAll(1,2,3) = 1+2+3 = 6; sumAll() = 0 (no arguments)Final Answer:
6 and 0 -> Option DQuick Check:
Sum of inputs or zero if none [OK]
- Assuming empty vararg causes error
- Forgetting sum starts at zero
- Confusing vararg with list requiring explicit array
Identify the error in this Kotlin function declaration:
fun printNames(vararg names: String, age: Int) {
for (name in names) println(name)
println(age)
}Solution
Step 1: Recall vararg parameter position rule
Kotlin requires the vararg parameter to be the last in the parameter list.Step 2: Check the function parameters
Here, varargnamesis beforeage, which is invalid syntax.Final Answer:
Vararg parameter must be the last parameter -> Option BQuick Check:
Vararg last parameter rule [OK]
- Placing vararg parameter before others
- Thinking vararg can be anywhere
- Using 'varargs' instead of 'vararg'
Given this function:
fun combine(vararg parts: String): String {
return parts.joinToString(separator = ", ")
}Which call correctly passes an existing array val arr = arrayOf("a", "b", "c") to combine?
Solution
Step 1: Understand how to pass an array to vararg
Kotlin requires the spread operator*to pass an array as vararg arguments.Step 2: Evaluate each option
combine(*arr) uses*arr, correctly spreading the array. combine(arr) passes the array as a single argument, not vararg. combine(arr.toList()) passes a list, not vararg. combine(arr as String) is invalid cast.Final Answer:
combine(*arr) -> Option AQuick Check:
Use * to spread array for vararg [OK]
- Passing array without * operator
- Passing list instead of array
- Trying invalid casts to String
Ready to prove it?
Pass the test and this pattern moves unknown
