我是否可以以某种方式强制泛型类型具有泛型类型?
我想要一些函数,它们作为参数类型U,那么我该怎么做呢?
代码:
class TableViewViewModel<T<U>> {
typealias SectionDataType = T
typealias RowDataType = U
var sections = [SectionDataType<RowDataType>]()
}
最佳答案
尝试声明需要关联类型的协议。这意味着任何一致的类型(如下面的SectionDataType
)都必须实现一个类型别名。然后,在Section
中,您可以通过typealias访问您调用的类型。
protocol SectionDataType {
associatedtype RowDataType
}
struct Section<U>: SectionDataType {
typealias RowDataType = U
}
class TableViewViewModel<T: SectionDataType> {
typealias RowDataType = T.RowDataType
var sections = [T]()
}