如何在 Kotlin 中乘以列表

Nic*_*ter 7 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 中如何实现这一点?

Jof*_*rey 13

首先想到的是创建一个列表列表并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]
Run Code Online (Sandbox Code Playgroud)

由此您可以编写自己的*运算符:

operator fun <T> Iterable<T>.times(count: Int): List<T> = List(count) { this }.flatten()
Run Code Online (Sandbox Code Playgroud)

并像在 Python 中一样使用它:

val a = listOf(1, 2, 3, 4)
val b = a * 3
Run Code Online (Sandbox Code Playgroud)