当使用map
、flatMap
、+
等函数式API操作Kotlin序列时,计算出的中间结果会在第二秒缓存评估有没有重新计算?
如果不是,用序列
替换列表
在某些情况下可能会导致复杂性呈指数级增长,并且official docs中使用了“惰性”一词。似乎不够精确来区分这两种行为。
换句话说,与 Scala 相比,Kotlin Sequence
是否更像 Scala Stream
s/LazyList
s(其中“一旦计算,值保持计算状态并被重用。或者,正如您所说,这些值被缓存。”)或 View
(其中“每次需要从中获取元素时都会重新应用所有转换”) )? (内容引用自What is the difference between view, stream and iterator? | FAQ | Scala Documentation)
最佳答案
每次调用序列上的终端函数时,都会重新评估该序列。但您可以使用toList()
对其进行评估,一次性完成评估并使用该列表进行后续操作。
关于scala - Kotlin 序列会缓存中间结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60745550/