我正在尝试部分使用 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)
列出列表仅用于演示目的。因此,创建整个序列的列表并拆分列表并不是我想要的答案。
有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)
归档时间: |
|
查看次数: |
739 次 |
最近记录: |