可变参数

函数的最后一个参数可以使用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)

results matching ""

    No results matching ""