Scala 中的 LazyList 和 List 有什么区别?
What are the differences between LazyList and List in Scala?
Scala 中的以下集合类型有何区别:List
和 LazyList
类型?
LazyList
是 Scala 标准库 2.13.1 中引入的新类型。
- 类型是不可变的,它被放入
scala.collection.immutable
包中。普通 List
类型之间的主要区别在于 LazyList
的元素是延迟计算的,因此只计算那些被请求的元素。通过这种方式,惰性列表可以拥有无限数量的元素。
- 在性能方面,两种类型(
LazyList
和List
)不相上下。
- A
LazyList
是用一个与 List
类型 (::
)、#::
.[=32 的特定运算符相似的运算符构造的=]
- 由于懒惰,
LazyList
不能像旧的 List
那样在递归循环中生成 WhosebugError
。
问题
What are the differences between LazyList
and List
?
可以改写为问题
What are the differences between Stream
and List
?
因为 Scala 2.13 发行说明
immutable.LazyList
replaces immutable.Stream
. Stream
had
different laziness behavior and is now deprecated. (#7558,
#7000)
改写问题的答案由 提供。
性能判断最好由 measurements 在特定场景中解决。
Scala 中的以下集合类型有何区别:List
和 LazyList
类型?
LazyList
是 Scala 标准库 2.13.1 中引入的新类型。
- 类型是不可变的,它被放入
scala.collection.immutable
包中。普通List
类型之间的主要区别在于LazyList
的元素是延迟计算的,因此只计算那些被请求的元素。通过这种方式,惰性列表可以拥有无限数量的元素。 - 在性能方面,两种类型(
LazyList
和List
)不相上下。 - A
LazyList
是用一个与List
类型 (::
)、#::
.[=32 的特定运算符相似的运算符构造的=] - 由于懒惰,
LazyList
不能像旧的List
那样在递归循环中生成WhosebugError
。
问题
What are the differences between
LazyList
andList
?
可以改写为问题
What are the differences between
Stream
andList
?
因为 Scala 2.13 发行说明
immutable.LazyList
replacesimmutable.Stream
.Stream
had different laziness behavior and is now deprecated. (#7558, #7000)
改写问题的答案由
性能判断最好由 measurements 在特定场景中解决。