【问题标题】:Nested Generic in SwiftSwift 中的嵌套泛型
【发布时间】: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


【解决方案1】:

也许这样的事情会起作用:

class Class2<Y> { }

class Class1<X, Y where X: Class2<Y>> { }

【讨论】:

  • Swift 错误:超类约束 'GenericDataSource' 不能依赖于类型参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
相关资源
最近更新 更多