Насколько я понимаю, 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
}
У меня проблема с блоком, в котором он преобразует комбинатПоследний в этот, похоже, анонимный класс.
Когда я смотрю на подписьдля combLatest показывает:
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 принимает 3 аргумента через @escaping (O1.E, O2.E, O3.E)
Похоже, создается новый анонимный объект,и один с 4 аргументами вместо 3.
Не могли бы вы объяснить, как создается новая наблюдаемая часть, казалось бы, анонимного класса (который я не совсем понимаю как возможный), и создается с помощью 4аргументы вместо 3?