1

当使用诸如map, flatMap,+等功能 API 操作 Kotlin 序列时,计算的中间结果是否会被缓存,因此在第二次评估时不会重新计算?

如果不是,在某些情况下将Lists替换为 s 可能会导致复杂性呈指数级增长,并且官方文档Sequence中使用的“懒惰”一词似乎不足以区分这两种行为。

换句话说,与 Scala 相比,KotlinSequence更像 Scala Streams/ LazyLists(其中“一旦计算,一个值将保持计算并被重用。或者,如您所说,值被缓存。”)或Views(其中“所有每次需要从中获取元素时都会重新应用转换”)?(引自What is the difference between view, stream and iterator? | FAQ | Scala Documentation

4

1 回答 1

1

每次在其上调用终端函数时,都会重新评估该序列。但是您可以评估它toList()以完成一次评估并使用该列表进行后续操作。

于 2020-03-18T20:26:00.480 回答