Kotlin展开运算符
当你需要传递一个数组参数时,在Kotlin中需要你解包数组,以便每个数组元素在函数中能作为单独的参数来调用。我们使用*号来展开这个数组。
fun main() {
val list: Array<String> = arrayOf("two","three","four")
val list2 = listOf("one",*list);
println(list2)
}
>>>[one, two, three, four]
下面这为错误的代码:
fun main() {
val list = listOf("two","three","four")
val list2 = listOf("one",*list);
println(list2)
}
>>>Type inference failed: fun <T> listOf(vararg elements: T): List<T> cannot be applied to (String,List<String>)
>>>Type mismatch: inferred type is List<String> but Array<out String> was expected
错误说了list为一个可变数组长度,他参数上使用vararg修饰,代表一个可变的列表,说明了展开运算符只能展开数组数据,不能展开一个可变长的列表。
可以理解为展开运算符遍历了一遍该数组。