在 Swift 中,我们可以在泛型项目上编写扩展,例如 sequence:
extension Sequence where Iterator.Element : ObservableType {
}
这将保证扩展仅适用于(在这种情况下)RxSwift 可观察量的序列。
但是,如果元素约束是另一个泛型,那么您可以约束该泛型吗?例如:
extension Sequence where Iterator.Element : ObservableType where E : MyType {
}
在上面的伪代码(不起作用)中,意图是说:
此扩展应适用于可观察的序列,其中可观察量是 MyType 类型的可观察量,例如 [可观察量]
您可以将Iterator.Element
限制为符合 ObservableType
,然后为关联的Iterator.Element
类型E
添加另一个约束:
protocol ObservableType {
associatedtype E
// ...
}
class MyType { }
extension Sequence where Iterator.Element: ObservableType, Iterator.Element.E: MyType {
}