Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios rxSwift扩展,用于转换单个<;[要素]>;可观察<;元素>;_Ios_Arrays_Swift_Observable_Rx Swift - Fatal编程技术网

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)} } }
谢谢,它工作得很好。关于如何命名这个函数,你有什么建议吗?你觉得“可观察”合适吗?