可变参数
函数的最后一个参数可以使用vararg关键字修饰,表示这是一个可变参数。
fun <T> asList(vararg ts: T): List<T> {
val result = ArrayList<T>()
for (t in ts)
result.add(t)
return result
}
进行函数调用时可以传入任意个参数。
val list = asList(1, 2, 3)
在函数内部可变参数类型T对所有的数组T都可见,比如,ts变量是类型为Array<out T>。
只能有一个参数可以被标记为vararg,如果一个可变参数不是参数列表中的最后一个,那么可变参数后的参数传递需要使用命名参数语法或者传递lambda表达式。
当调用一个可变参数函数时,我们可以一个一个的传递参数,比如asList(1, 2, 3),或者我们有个数组,并且想将数组内容传递给函数,可以使用spread操作符(在数组前加前缀*):
val a = arrayOf(1, 2, 3)
val list = asList(-1, 0, *a, 4)