代码之家  ›  专栏  ›  技术社区  ›  Evgeniy Kleban

Swift闭包语法

  •  1
  • Evgeniy Kleban  · 技术社区  · 8 年前

    我有以下代码:

    let obsScan = source.scan(0, accumulator: +)
    let obsReduce = source.reduce(0, accumulator: +)
    
    let obs = Observable.zip(obsScan, obsReduce) { scan, reduce in
            return "scan - \(scan), reduce - \(reduce)"
    }
    

    我想用自动完成闭包语法重写它,结果是:

    let obs = Observable.zip(obsScan, obsReduce, resultSelector: { (scan, reduce) -> _ in
             return "scan - \(scan), reduce - \(reduce)"
    })
    

    闭包参数列表的上下文类型需要2个参数,其中 不能隐式忽略行上的连续语句必须为 由“;”分隔预期表达式

    我不明白为什么我用tab来自动完成带有闭包的函数,当我填充参数时,我得到了一个错误?

    整个函数声明如下:

     public static func zip<O1, O2>(_ source1: O1, _ source2: O2, resultSelector: @escaping (O1.E, O2.E) throws -> RxSwift.Observable.E) -> RxSwift.Observable<RxSwift.Observable.E> where O1 : ObservableType, O2 : ObservableType
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Vyacheslav    8 年前

    我不知道你在等什么。但这应该是可行的:

    let obs = Observable.zip(obsScan, obsReduce, resultSelector: { scan, reduce in
             return "scan - \(scan), reduce - \(reduce)"
    })