微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 嵌套通用约束:限制泛型序列扩展中的泛型项的T,该扩展受限于该泛型类型

@H_404_4@ 在 Swift中,我们可以编写通用项目的扩展,例如序列:

extension Sequence where Iterator.Element : ObservableType {

}

这将保证扩展仅适用于(在这种情况下)RxSwift可观察量的序列.

但是,如果元素约束是另一个泛型,那么你可以约束那个泛型吗?例如.:

extension Sequence where Iterator.Element : ObservableType where E : MyType {

 }

在上面的伪代码(不起作用)中,意图是:

此扩展应该应用于Observable的序列,其中Observable是MyType类型的Observable,例如[可观察]

解决方法

您可以将Iterator.Element限制为符合的类型
ObservableType然后为Iterator.Element的关联类型E添加一个约束:

protocol ObservableType {
    associatedtype E
    // ...
}

class MyType { }

extension Sequence where Iterator.Element: ObservableType,Iterator.Element.E: MyType {

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐