asSynchronouslyIterateCollectable

将一个 Collectable 转化为可以提供同步迭代能力的迭代器 SynchronouslyIterateCollectable。

如果本身就属于 SynchronouslyIterateCollectable 类型则会得到自身,否则会尝试通过阻塞函数转化。 这种情况下得到的 SynchronouslyIterateCollectable 是借助 Flow 实现的 FlowSynchronouslyIterateCollectable 类型。 这其中可能会有一定的性能损耗,因为这其中隐含了将挂起函数转化为阻塞函数的行为。

produceScope 用于当 Collectable 需要通过 Flow 以 FlowSynchronouslyIterateCollectable 类型实现时, 使用在 FlowSynchronouslyIterateCollectable.iterator 中,将 Flow 转化为 Iterator。

如果最终的类型不是 FlowSynchronouslyIterateCollectable,那么 produceScope 将不会被使用。

如果不希望进行过多的校验和优化,直接转化为 FlowSynchronouslyIterateCollectable,可以考虑通过 Collectable.asFlow 得到 Flow 后使用 asFlowSynchronouslyIterateCollectable。

See also