参与 Kotlin 中的序列

Jer*_*oen 2 sequence kotlin

我正在尝试部分使用 Kotlin 中的序列,以便将其拆分。

fun main() {
    val seq = listOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9).asSequence()
    println(seq.take(4).toList().toString());
    println(seq.toList().toString())
}
Run Code Online (Sandbox Code Playgroud)

这输出:

[0, 1, 2, 3]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 90]
Run Code Online (Sandbox Code Playgroud)

但我所追求的是:

[0, 1, 2, 3]
[4, 5, 6, 7, 8, 90]
Run Code Online (Sandbox Code Playgroud)

列出列表仅用于演示目的。因此,创建整个序列的列表并拆分列表并不是我想要的答案。

IR4*_*R42 5

asSequence()迭代器函数,但它返回只能迭代一次的序列。要点是每次迭代都使用相同的迭代器。

// I don't know how to name the function...
public fun <T> Iterable<T>.asIteratorSequence(): Sequence<T> {
    val iterator = this.iterator()
    return Sequence { iterator }
}

fun main() {
    val seq = listOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9).asIteratorSequence()

    println(seq.take(4).toList().toString()) // [0, 1, 2, 3]
    println(seq.toList().toString()) // [4, 5, 6, 7, 8, 9]
    println(seq.toList().toString()) // []
}
Run Code Online (Sandbox Code Playgroud)