10

我注意到它Stream已被弃用Scala 2.13,他们建议使用LazyList. 他们还说“使用 LazyList(完全惰性)而不是 Stream(只有惰性尾部)”。
它到底是什么意思?他们为什么不赞成Stream

4

2 回答 2

9

NthPortal,贡献者LazyList,状态更新和改进 LazyList 文档 #7842

LazyListand之间的关键区别Stream——以及它的关键特性——是它是否是惰性的,是惰性评估的。我不确定如何最好地传达这一点。

相关问题中的 jwvh 状态

Stream除了第一个(头)元素外,其他元素都是延迟实现的。这被视为一种缺陷。

Scala 2.13 发行说明状态

immutable.LazyList替换immutable.Stream. Stream有不同的懒惰行为,现在已被弃用。(#7558#7000

于 2020-02-08T17:19:24.590 回答
2

根据博客文章

LazyList 在 Stream 上是首选

Stream 已被弃用,取而代之的是 LazyList。顾名思义,LazyList 是一个链表,其元素被延迟评估。与 Stream 的一个重要语义区别是,在 LazyList,头部和尾部都是惰性的,而在 Stream 中只有尾部是惰性的

同样在Stream 文档中:

已弃用(自版本 2.13.0 起)

使用 LazyList(完全惰性)而不是 Stream(只有惰性尾部)

于 2020-06-23T00:52:14.367 回答