是否可以在Kotlin的列表中传播列表?

时间:2017-12-21 14:58:19

标签: kotlin

可以在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有一种更简单的方式。有什么想法吗?

2 个答案:

答案 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相关。