关键点
大约 1 分钟
Collections
是及早(贪婪)求值:在结果传递给下个操作符之前所有的子项都会被处理。- 序列使用惰性求值的方式处理集合中的数据:序列中的数据直到访问到它时才会被求值或分配。
- 序列有两条基本规则:它们必须根据你给定的生成规则生成数据并基于此规则可以生成无限大小的数据。
- 序列非常适合表示事先不知道大小的集合,比如从文件中读取行或者在给定规则的情况下生成看似无限多的数据。
- 可以使用
asSequence
将List
转换为序列。 - 大多数情况下建议使用简单的
Iterables
。使用序列的好处仅在于当具有多个操作的元素的大集合或者无限集合时,特别是过滤元素时。 - 生成器函数是一种特殊类型的函数,可以返回值,并且可以在再次调用时恢复。
- 当使用带有序列的协程时,可以实现生成器。
SequenceScope
是为使用挂起函数或协程生成Sequence
或Iterator
的值而定义的。SequenceScope
提供了yield
和yieldAll
挂起函数以启用生成器函数行为。