【问题标题】:Transform SignalProducer that emits arrays to SignalProducer that emits all elements of the original array将发出数组的 SignalProducer 转换为发出原始数组的所有元素的 SignalProducer
【发布时间】:2016-04-21 10:01:09
【问题描述】:
假设我有一个SignalProducer<[Element], Error>,它在启动时会发出一个元素数组。
我想将 SignalProducer 转换为新的 SignalProducer<Element, Error>,它会连续发出 [Element] 数组的每个元素。
这样做的最佳方法是什么?
【问题讨论】:
标签:
ios
swift
functional-programming
reactive-cocoa
【解决方案1】:
你可以这样做:
let firstProducer: SignalProducer<[Element], Error> = // something
let toSingleElement: [Element] -> SignalProducer<Element, Error> = { SignalProducer(values: $0) }
let secondProducer = firstProducer.flatMap(.Concat, transform: toSingleElement)
您也可以使用Rex 的运算符:uncollect。