所以我正在学习Kotlin,并且对generateSequence
val numberGenerator: Sequence<Int> = generateSequence(0) { it + 1 }
println(numberGenerator.take(10).toList())
println(numberGenerator.take(3).toList())
上面的代码生成了以下结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2]
我想实现这样的目标:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12]
我希望生成器记住最后一个元素的内部状态并从此继续,在Kotlin中是否有针对此元素的内置解决方案?
答案 0 :(得分:0)
我了解您的需求,但我认为这不适合序列的意图。它是对无限流的定义,可以多次使用以生成相同的流。
我想,如果要生成一组值切片,则必须做一些自己的包装和调整。以下是一些选项:
fun main() {
val myList = generateSequence(0) { it + 1 }.take(10).toList()
val myList2 = generateSequence(10) { it + 1 }.take(3).toList()
println(myList)
println(myList2)
val myListV2 = List(10) { index -> index }
val myListV2_2 = List(3) { index -> 10 + index }
println(myListV2)
println(myListV2_2)
val myListV3 = (0..9).toList()
val myListV3_2 = (10..12).toList()
println(myListV3)
println(myListV3_2)
}
答案 1 :(得分:0)
否,您无法保存val numberGenerator: Sequence<Int> = generateSequence(0) { it + 1 }
val fullList = numberGenerator.take(13).toList()
val part1 = fullList.subList(0, 10)
val part2 = fullList.subList(10, 13)
println(part1)
println(part2)
的状态。但是,您可以将所有物品都拿走,然后将它们拆分到单独的列表中。
url
(\(
(?P<url>(?:[^()]*|(?1))+)
\))