当使用诸如map
, flatMap
,+
等功能 API 操作 Kotlin 序列时,计算的中间结果是否会被缓存,因此在第二次评估时不会重新计算?
如果不是,在某些情况下将List
s替换为 s 可能会导致复杂性呈指数级增长,并且官方文档Sequence
中使用的“懒惰”一词似乎不足以区分这两种行为。
换句话说,与 Scala 相比,KotlinSequence
更像 Scala Stream
s/ LazyList
s(其中“一旦计算,一个值将保持计算并被重用。或者,如您所说,值被缓存。”)或View
s(其中“所有每次需要从中获取元素时都会重新应用转换”)?(引自What is the difference between view, stream and iterator? | FAQ | Scala Documentation)