【发布时间】:2016-07-27 05:50:12
【问题描述】:
简单地说,我有一个泛型类Class1<X:Class2<Y>>,据我所知,Swift 迫使我硬编码Y 输入Class1 的声明,但我还需要Y 是可变的作为X。
加长版
我有一个泛型类 DataSource<T:GenericItem> 类,它是非泛型实现的子类(例如 ItemsDataSource:DataSource<Item>)。
现在我想创建一个通用控制器,它可以与我的通用 DataSource 的子类一起使用。
所以我要声明这样的控制器 TableViewController<DS:GenericDataSource<GenericItem>>,但在这种情况下,我无法使用 DataSource 参数将其子类化
GenericItem 的子类作为它自己的参数(即我不能声明 SuperTableViewController<ItemsDataSource>,因为 ItemsDataSource 具有 Item 泛型参数而不是其父 GenericItem)。
知道如何创建这样的通用控制器吗?
【问题讨论】:
-
如果我理解您的问题,您还必须使用泛型类型覆盖协议。
-
你能再解释一下吗?我没有任何协议,只有一个需要嵌套在其他泛型中的泛型类?
-
我认为问题是你说 DS 是通用的,但 TableViewDataSource 是硬类型的。
标签: swift nested-generics