我很困惑如何在Kotlin中创建一个无限序列来用于懒惰评估.
在Java中:
IntStream.iterate(0, i -> i + 2)
.limit(100)
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
但是序列似乎比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.
*/
Run Code Online (Sandbox Code Playgroud)
但是我不知道迭代器函数意味着什么或如何制作一个.
Sequence { iterator(arrayOf<Int>()) }
.forEach { print(it) }
Run Code Online (Sandbox Code Playgroud)
我有这个编译,但显然不打印任何东西.我认为我的迭代器功能没有任何意义.它需要一个不带参数的函数并返回一个迭代器,它与Java .iterate
函数完全不同.Iterator碰巧有一个构造函数,它接受一个数组,如果我有一个数据集可以在一个数组中工作,但我没有.我想要一个无限的序列.
没有.limit
,所以我以前尝试添加一个,.reduce
但争论.reduce
更令人困惑.我认为应该有一个,.toList
但我知道它不起作用,所以我没有尝试.
如果有人会告诉我如何在Kotlin中实现上述Java代码,那将会有很大帮助.
And*_*dEx 19
您可以使用generateSequence
工厂方法:
generateSequence(0) { it + 2 }.forEach { println(it) }
Run Code Online (Sandbox Code Playgroud)
或者对于有限的情况:
generateSequence(0) { it + 2 }.take(100).forEach { println(it) }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3741 次 |
最近记录: |