遅延評価に使用するkotlinで無限シーケンスを作成する方法について混乱します。 Javaでkotlin反復関数を使用した無限シーケンス
:
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.
*/
を私はそれはイテレータ機能によって、あるいはどのように1を作るために何を意味するのか分かりません。
Sequence { iterator(arrayOf<Int>()) }
.forEach { print(it) }
これはコンパイルされていますが、明らかに何も印刷されません。私は反復子関数が意味をなさないとは思わない。それは、引数を取らず、イテレータを返す関数を必要とします。これは、Javaの.iterate関数とまったく同じではありません。イテレーターは配列をとるコンストラクターを持っていることがあります。これは、配列内で動作するようにデータセットを持っていれば意味がありますが、そうではありません。私は無限のシーケンスで作業したい。
.limitはありません。以前は.reduceを追加しようとしましたが、.reduceの引数はさらに混乱していました。私は.toリストがあるはずだと思うが、それが動作していないことを知っていたので、私はそれを試していなかった。
誰かがlotlinで上記のJavaコードを実装する方法を教えてくれれば、多くの助けになります。