fun main() {
printAll("Hello", "Hallo", "Salut", "Hola", "你好") // 2
printAllWithPrefix("Hello", "Hallo", "Salut", "Hola", "你好", prefix = "Greeting: " // 4
)
}
fun printAll(vararg messages: String) { // 1
for (m in messages) println(m)
}
fun printAllWithPrefix(vararg messages: String, prefix: String) { // 3
for (m in messages) println(prefix + m)
}
fun log(vararg entries: String) {
printAll(*entries) // 5
}
輸出畫面
Hello
Hallo Salut Hola 你好 Greeting: Hello Greeting: Hallo Greeting: Salut Greeting: Hola Greeting: 你好
- 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 ofString
) instead ofentries
(anArray<String>
).
沒有留言:
張貼留言