[英]Do Kotlin Sequences cache intermediate results?
当使用诸如map
、 flatMap
、 +
等功能性 API 操作 Kotlin 序列时,计算的中间结果是否被缓存,以便在第二次评估时没有重新计算?
如果没有,在某些情况下用Sequence
替换List
可能会导致复杂性成倍增加,官方文档中使用的“懒惰”一词似乎不够精确,无法区分这两种行为。
换句话说,与 Scala 相比,Kotlin Sequence
更像是 Scala Stream
s/ LazyList
s(其中“一旦计算,一个值保持计算状态并被重用。或者,如你所说,这些值被缓存。”)或View
s (其中“每次需要从中获取元素时都会重新应用所有转换”)? (引用内容来自视图、流和迭代器有什么区别? | 常见问题 | Scala 文档)
每次在其上调用终端函数时都会重新评估该序列。 但是你可以用toList()
来求值,完成一次求值,并使用列表进行后续操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.