Ios rxSwift扩展,用于转换单个<;[要素]>;可观察<;元素>;
我正在努力创建一个扩展,将单个数组转换为可观测数组。例如,我有一个Ios rxSwift扩展,用于转换单个<;[要素]>;可观察<;元素>;,ios,arrays,swift,observable,rx-swift,Ios,Arrays,Swift,Observable,Rx Swift,我正在努力创建一个扩展,将单个数组转换为可观测数组。例如,我有一个单一的,我想把它转换成一个可观察的 每次我要写的代码是 mySingleVariable.asObservable().flatMap({ addresses in Observable.from(addresses) }) 此操作非常常见,代码非常冗长。我尝试创建一个扩展,如下所示 extension PrimitiveSequence where Trait == SingleTrait { func flatObs
单一的
,我想把它转换成一个可观察的
每次我要写的代码是
mySingleVariable.asObservable().flatMap({ addresses in Observable.from(addresses) })
此操作非常常见,代码非常冗长。我尝试创建一个扩展,如下所示
extension PrimitiveSequence where Trait == SingleTrait {
func flatObservable<R: Collection>() -> Observable<R.Element> {
return asObservable().flatMap({ element in Observable.from(element) })
}
}
扩展原语序列,其中Trait==SingleTrait{
func flatObservable()->可观察{
返回asObservable().flatMap({element in Observable.from(element)})
}
}
不幸的是,上面的代码不起作用。我得到的错误是“函数签名中未使用泛型参数'R'。这是因为函数返回可观察的
。如果返回可观察的,,则错误会消失,但这不是我试图实现的结果。尝试以下方法:
extension PrimitiveSequence where Trait == SingleTrait, Element: Sequence {
func flatObservable<R>() -> Observable<R> where R == Element.Element {
return asObservable().flatMap { Observable.from($0) }
}
}
扩展原语序列,其中Trait==SingleTrait,元素:Sequence{
func flatObservable()->可观测,其中R==Element.Element{
返回asObservable().flatMap{Observable.from($0)}
}
}
谢谢,它工作得很好。关于如何命名这个函数,你有什么建议吗?你觉得“可观察”合适吗?