首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泛型的泛型?A<T<U>>类?

泛型的泛型?A<T<U>>类?
EN

Stack Overflow用户
提问于 2017-03-12 04:25:17
回答 2查看 525关注 0票数 2

我能以某种方式强制泛型类型具有泛型类型吗?我想要有一些函数,它们的参数类型是U,那么我该怎么做呢?

代码:

代码语言:javascript
复制
class TableViewViewModel<T<U>> {
    typealias SectionDataType = T
    typealias RowDataType = U

    var sections = [SectionDataType<RowDataType>]()
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-12 04:32:38

尝试声明需要关联类型的协议SectionDataType。这意味着任何符合条件的类型(如下面的Section )都必须实现一个类型别名。然后,在TableViewViewModel中,您可以通过该类型别名访问您调用的U类型。

代码语言:javascript
复制
protocol SectionDataType {
    associatedtype RowDataType
}

struct Section<U>: SectionDataType {
    typealias RowDataType = U
}

class TableViewViewModel<T: SectionDataType> {
    typealias RowDataType = T.RowDataType

    var sections = [T]()
}
票数 3
EN

Stack Overflow用户

发布于 2017-03-12 04:36:11

对于泛型,你所要做的就是声明类型(你对尖括号做了什么)。在此之后,语法照常进行。我不确定您到底想要做什么,所以我将只发布一个示例。下面的函数声明了三个泛型类型( T,U,Z),接受一个类型U和一个函数作为参数,函数本身接受一个类型为U的值,并返回一个类型为T的值。所有这些都返回一个类型为Z的值。(这是一个非常无用的函数,但它是一个如何以复杂方式使用泛型的示例):

代码语言:javascript
复制
func myFunc<U,T,Z>(curry : (U) -> T, value : U) -> Z {
    return curry(value) as! Z
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42740216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档