如何在Kotlin中创建一个无限长的序列

时间:2016-05-03 15:48:14

标签: kotlin

我正在寻找像

这样的东西
val allInts = (1..).asSequence()

所以我可以,例如

allInts.take(5)

3 个答案:

答案 0 :(得分:15)

val sequence = generateSequence(1) { it + 1 }
val taken = sequence.take(5);
taken.forEach { println(it) }

但这并不是无限的:当达到Integer.MAX_VALUE时它会溢出。

答案 1 :(得分:9)

使用Int.MAX_VALUE作为上限。您不能有大于Int.MAX_VALUE的整数。

val allInts = (1..Int.MAX_VALUE).asSequence()

答案 2 :(得分:2)

JB的答案很好,但你也可以选择

generateSequence(1, Int::inc)

如果你进入整个简洁的事情。