Swift 快速通用序列可观测模糊度

Swift 快速通用序列可观测模糊度,swift,generics,rx-swift,Swift,Generics,Rx Swift,我有以下代码 protocol NamedOption { var optionTitle: String { get } } struct DebugOption: NamedOption { let optionTitle: String let debugViewControllerType = UIViewController.self } func testFunk<T: Sequence>(d: Observable<T>) wh

我有以下代码

protocol NamedOption {
    var optionTitle: String { get }
}

struct DebugOption: NamedOption {
    let optionTitle: String
    let debugViewControllerType = UIViewController.self
}


func testFunk<T: Sequence>(d: Observable<T>) where T.Element == NamedOption {

}

func bindFullResultsRx() {
    let dd: Observable<[DebugOption]> = self.dataModel.debugOptions // this is defined and properly assigned earlier
    testFunk(d: dd)
}
在我看来,这比顶部的版本更具限制性。有人知道如何使用
T:Sequence


Xcode版本是9.4,Swift版本是4.1。

OO和泛型不能很好地结合在一起。为了做您想做的事情,您必须手动向上转换,如下所示:

testFunk(d: dd.map { $0.map { $0 as NamedOption } })

在同事们的挖掘和帮助下,我只需将
==
更改为
,就可以让它正常工作,所以看起来是这样的

func testFunk<T: Sequence>(d: Observable<T>) where T.Element: NamedOption {

}
func testFunk(d:可观察),其中T.元素:NamedOption{
}
这只是一个快速语法的问题

一致性要求→ 类型标识符:协议组合类型

func testFunk<T: Sequence>(d: Observable<T>) where T.Element: NamedOption {

}