具有迭代函数的kotlin无限序列

我很困惑如何在kotlin中创建一个无限序列用于懒惰评估。

在java中:

IntStream.iterate(0, i -> i + 2) .limit(100) .forEach(System.out::println); 

但是序列似乎比java流更混乱。 序列构造函数是非常混淆的文件,它说:

 /** * Given an [iterator] function constructs a [Sequence] that returns values through the [Iterator] * provided by that function. * The values are evaluated lazily, and the sequence is potentially infinite. */ 

但是我不知道迭代器函数是什么意思或者怎么做的。

 Sequence { iterator(arrayOf<Int>()) } .forEach { print(it) } 

我有这个编译,但显然不打印任何东西。 我不认为我的迭代器功能是有道理的。 它需要一个不带参数的函数,并返回一个迭代器,它完全不像Java .iterate函数。 迭代器碰巧有一个构造函数接受一个数组,如果我有一个数据集在一个数组中工作,但是我不知道。 我想要以无限的顺序进行工作。

没有.limit,所以我以前试过添加一个.reduce,但是.reduce的参数更加混乱。 我认为应该有一个.toList,但我知道这是行不通的,所以我没有尝试。

如果有人会告诉我如何在lotlin中实现上面的java代码,这将有很大的帮助。

你可以使用generateSequence工厂方法:

 generateSequence(0) { it + 2 }.forEach { println(it) } 

或者对于有限的情况:

 generateSequence(0) { it + 2 }.take(100).forEach { println(it) }