有可能在Kotlin的列表中散布列表吗?
可以在Kotlin中进行参数解包,类似于在Python中的解包方式吗?例如有可能在Kotlin的列表中散布列表吗?,kotlin,Kotlin,可以在Kotlin中进行参数解包,类似于在Python中的解包方式吗?例如 >>> a = [1,2,3] >>> b = [*a,4,5,6] >>> b [1, 2, 3, 4, 5, 6] 我知道在科特林有以下可能: >>> listOf(1, 2, 3, *listOf(4,5,6).toTypedArray()) [1, 2, 3, 4, 5, 6] 感觉在科特林有更简单的方法。有什么想法吗?这些方法适用于阵列
>>> a = [1,2,3]
>>> b = [*a,4,5,6]
>>> b
[1, 2, 3, 4, 5, 6]
我知道在科特林有以下可能:
>>> listOf(1, 2, 3, *listOf(4,5,6).toTypedArray())
[1, 2, 3, 4, 5, 6]
感觉在科特林有更简单的方法。有什么想法吗?这些方法适用于阵列,因此您可以执行以下操作:
listOf(1, 2, 3, *(arrayOf(4, 5, 6)))
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())
}
fun main(args:Array){
val a=数组(1,2,3)
val b=阵列(*a,4,5,6)
println(b.contentToString())
}
文件告诉我们:
调用vararg函数时,可以一个接一个地传递参数,例如asList(1、2、3),或者,如果我们已经有一个数组并希望将其内容传递给函数,则使用扩展运算符(在数组前面加*):
也与此相关。如果
a=arrayOf(4,5,6)
,那么b=listOf(1,2,3,*a)
工作正常;例如,请参阅其他类型的集合没有实现spread运算符的任何原因?如果您只是添加到开始或结束,您也可以只添加列表:listOf(1,2,3)+listOf(4,5,6)
是的,这在Kotlin中是一个不幸的限制。例如,您可以使用Scala中的等效运算符扩展列表或其他内容。