在Swift中,我们可以编写通用项目的扩展,例如序列:
extension Sequence where Iterator.Element : ObservableType {
}
Run Code Online (Sandbox Code Playgroud)
这将保证扩展仅适用于(在这种情况下)RxSwift可观察量的序列.
但是,如果元素约束是另一个泛型,那么你可以约束那个泛型吗?例如:
extension Sequence where Iterator.Element : ObservableType where E : MyType {
}
Run Code Online (Sandbox Code Playgroud)
在上面的伪代码(不起作用)中,意图是:
此扩展应该应用于Observable的序列,其中Observable是MyType类型的Observable,例如[Observable]
您可以限制Iterator.Element为符合以下条件的类型
ObservableType,然后为关联类型添加另一个E约束Iterator.Element:
protocol ObservableType {
associatedtype E
// ...
}
class MyType { }
extension Sequence where Iterator.Element: ObservableType, Iterator.Element.E: MyType {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |