据我所知,Swift不支持匿名类。
我正在使用一个RXSwift代码库,有一个代码块我无法完全理解正在发生的事情。
这里是街区:
sections = Observable.combineLatest(observable1,
observable2,
observable3)
{
(arg1: $1,
arg2: $0.0,
arg3: $0.1,
arg4: $2)
}
.map { arg1, arg2, arg3, arg4 -> [Section] in
// Do Stuff
}
我遇到的问题是,在这个块中,它将combinelatest转换成匿名类。
当我查看combinelatest的签名时,它显示:
public static func combineLatest<O1, O2, O3>(_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: @escaping (O1.E, O2.E, O3.E) throws -> Self.E) -> RxSwift.Observable<Self.E> where O1 : ObservableType, O2 : ObservableType, O3 : ObservableType
因此,在我阅读它时,@escaping关闭通过
@escaping (O1.E, O2.E, O3.E)
似乎正在创建一个新的匿名对象,它的参数是4而不是3。
你能解释一下,一个看似匿名的类(我不完全理解,这是可能的)是如何被创建的,并且是如何用4个参数而不是3个参数来创建的吗?