swift - 如何扩展ReactiveCocoa4的SignalProducerType

标签 swift reactive-cocoa

我尝试使用 SequenceType 值扩展 SignalProducerType。但我做不到。编译时出现“表达式类型不明确,没有更多上下文”错误。

protocol TranslatorType {
    typealias Source
    typealias Destination
    func translate(source: Source) -> Destination
}

extension SignalProducerType where Value: SequenceType {
    func translate<T: TranslatorType, U: SequenceType where T.Source == Value.Generator.Element, T.Destination == U.Generator.Element>(translator: T) -> ReactiveCocoa.SignalProducer<U, Error> {
        return lift { $0.map { seq in seq.map(translator.translate) } } # Type of expression is ambiguous without more context error
    }
}

我怎样才能做到这一点?

最佳答案

SequenceTypemap 函数返回一个数组,您无法映射到通用 SequenceType。将类型 U 改为数组,即可编译:

extension SignalProducerType where Value: SequenceType {
    func translate<T: TranslatorType, V where T.Source == Value.Generator.Element, T.Destination == V>(translator: T) -> ReactiveCocoa.SignalProducer<[V], Error> {
        return lift {  $0.map { seq in seq.map(translator.translate) } }
    }
}

关于swift - 如何扩展ReactiveCocoa4的SignalProducerType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35522830/

相关文章:

ios - 如何在 iOS 中为 Web View 设置特定大小的自定义字体?

ios - 在 react 管道中删除嵌套的 subscribeNext

ios - 检测对象的至少一个属性是否被修改

ios - 将 UITextView 绑定(bind)到 MutableProperty

ios - 过滤器功能在这种情况下不起作用?

ios - 保存最后一个 datePicker 选择

swift - 使用 Decodable 构造嵌套数据

json - Swift 中的 Alamofire : converting response data in usable JSON dictionary

ios - 从通知中心托盘中删除特定的推送通知

ios - 如何在不使用 [RACSignal createSignal] 的情况下返回 RACSignal