asSynchronouslyIterateCollectable

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

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

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

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

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

See also