可以在Kotlin中进行参数解包,类似于在Python中完成的方式吗? E.g。
>>> a = [1,2,3]
>>> b = [*a,4,5,6]
>>> b
[1, 2, 3, 4, 5, 6]
我知道Kotlin有可能如下:
>>> listOf(1, 2, 3, *listOf(4,5,6).toTypedArray())
[1, 2, 3, 4, 5, 6]
感觉Kotlin有一种更简单的方式。有什么想法吗?
答案 0 :(得分:13)
spread operator适用于数组,因此您可以这样做:
listOf(1, 2, 3, *(arrayOf(4, 5, 6)))
答案 1 :(得分:3)
python代码可以用以下Kotlin代码表示。正如zsmb13已经回答的那样,运营商*
也可以在Kotlin中找到:
fun main(args: Array<String>) {
val a = arrayOf(1, 2, 3)
val b = arrayOf(*a, 4, 5, 6)
println(b.contentToString())
}
文档告诉我们:
当我们调用vararg函数时,我们可以逐个传递参数,例如: asList(1,2,3),或者,如果我们已经有一个数组并希望将其内容传递给函数,我们使用spread运算符(数组前缀为*):
还与此question相关。