[英]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.