繁体   English   中英

Swift:扩展关联类型为数组的协议

[英]Swift: extend protocol whose associated type is an array

我正在尝试创建一个适用于 arrays 的 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 吗?

这个怎么样?

    func beat<U>(_ beat: Observable<[U]>) -> Observable<[U]> where [U] == Element {
        Observable.zip(self, beat).map { $0.0 }
    }

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM