ReactiveCocoa 4渐进收集运算符

时间:2016-04-22 02:49:27

标签: ios swift functional-programming reactive-cocoa

ReactiveCocoa有一个collect运算符,它将所有下一个值聚合到一个数组中,直到信号或生成器完成,然后发送该聚合值。我需要的是一个渐进式收集运算符,其中值将被收集到一个数组中,直到过滤条件被传递,此时数组将被转发,操作符将在空数组中重新开始并重新聚合值。

例如,如果给定的生产者按顺序发出值1,2,3,4,5,6,7,8,9以及collectWhile运算符:

producer.collectWhile { $0 % 5 == 0 }.on(next: { print($0) })

有两个印刷声明:

[1, 2, 3, 4][5, 6, 7, 8, 9]

此时self将完成,collectWhile运算符也将完成。

collectreduce构建,但它使用私有数据结构:

/// A reference type which wraps an array to avoid copying it for performance and
/// memory usage optimization.
private final class CollectState<Value> {
    var values: [Value] = []

    func append(value: Value) -> Self {
        values.append(value)
        return self
    }
}

为了避免复制聚合值,所以我假设我可能不得不在我的实现中做类似的事情。任何人都对如何完成我正在寻找的行为有任何想法?

0 个答案:

没有答案