Varargs allow you to pass any number of arguments by separating them with commas.
- The vararg modifier turns a parameter into a vararg.
- This allows calling printAll with any number of string arguments.
- Thanks to named parameters, you can even add another parameter of the same type after the vararg. This wouldn’t be allowed in Java because there’s no way to pass a value.
- Using named parameters, you can set a value to prefix separately from the vararg.
- At runtime, a vararg is just an array. To pass it along into a vararg parameter, use the special spread operator * that lets you pass in *entries (a vararg of String) instead of entries (an Array<String>).
fun printAll(vararg messages: String) { for (m in messages) println(m) } printAll("Hello", "Hallo", "Salut", "Hola", "你好") fun printAllWithPrefix(vararg messages: String, prefix: String) { for (m in messages) println(prefix + m) } printAllWithPrefix( "Hello", "Hallo", "Salut", "Hola", "你好", prefix = "Greeting: " ) fun log(vararg entries: String) { printAll(*entries) }