0

我正在尝试创建一个适用于数组的 Rx 运算符。我试过这个简单的扩展:

extension ObservableType where Element == Array<Any> {
    func beat<U>(_ beat: Observable<U>) -> Observable<Element.Element> {
        let lhs = self.flatMap { Observable.from($0) }
        return Observable.zip(lhs, beat).map { $0.0 }
    }
}

现在,我已经注意到Array<Any>,否则我会得到 Reference to generic type 'Array' requires arguments in <...>,但是这样返回值当然是Observable<Any>

Element甚至可以用数组的实际值返回一个 observable吗?

4

2 回答 2

1

这个怎么样?

    func beat<U>(_ beat: Observable<[U]>) -> Observable<[U]> where [U] == Element {
        Observable.zip(self, beat).map { $0.0 }
    }
于 2021-03-12T23:38:07.873 回答
0

您很可能希望使用Swift 5.2 中未实现的参数化扩展。

作为一种解决方法,您可以创建一个接受Array<T>作为第二个参数的全局泛型函数。

于 2020-04-26T15:07:20.357 回答