我是否可以以某种方式强制泛型类型具有泛型类型?
我想要一些函数,它们作为参数类型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]()
}

10-07 19:32