【发布时间】:2020-05-24 11:04:24
【问题描述】:
我注意到Stream 在Scala 2.13 中已弃用,他们建议使用LazyList。
他们还说“使用 LazyList(完全惰性)而不是 Stream(只有惰性尾部)”。
它到底是什么意思?他们为什么弃用 Stream ?
【问题讨论】:
-
基本上 Stream 只是在其
tail上懒惰,因此始终计算head。对于许多人来说,这令人惊讶并导致错误的代码。另一方面 LayzList 是完全惰性的。在调用它之前它不会计算头部。请注意,当您计算 LayzList 的头部时,也会计算其尾部,反之亦然。 -
知道了。谢谢。
-
@LuisMiguelMejíaSuárez 是否有会导致错误代码的示例?
-
@MarioGalic 在正确的意义上没有错误。但在它的行为方式上是错误的。
标签: scala stream scala-collections lazylist