如何在Kotlin中乘以列表
如果我有一个清单:
val a: mutableListOf<Int> = (1,2,3,4)
我希望有一个新的列表b
与(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)
在 python 中,你可以只拥有 a * 3
在 Kotlin 中如何实现这一点?
回答
首先想到的是创建一个列表列表并flatten-ing 它:
val count = 3
val a = listOf(1, 2, 3, 4)
val b = List(count) { a }.flatten()
println(b) // [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
由此您可以编写自己的*运算符:
operator fun <T> Iterable<T>.times(count: Int): List<T> = List(count) { this }.flatten()
并像在 Python 中一样使用它:
val a = listOf(1, 2, 3, 4)
val b = a * 3