使泛型类的函数仅接受具有相同泛型类型但受更多约束的参数

简单99

我有一个generic可以初始化为任何类型的类。我想添加一个带有单个参数的函数,该函数采用的值既是类的泛型类型,又符合Comparable协议。类型一致性应在预编译时强制执行。

我想做这样的事情:

class Object<T> {

    let value: T!

    init (value: T) {
        self.value = value
    }

    func doSomething<U where U: Comparable, U == T>(otherValue: U) {
        // do something
    }
}

这可能吗?

内特·库克

抱歉不行。您无法在方法中进一步专门化泛型类型-您需要为所需的行为添加顶级函数。

这是Array没有纯myArray.sort()函数的原因,因为没有办法保证任何Array实例的成员都将是Comparable而是有一个带有此签名的顶级函数:

func sort<T : Comparable>(inout array: [T])

您的顶层函数将具有类似的结构:

func doSomething<T: Comparable)(obj: Object<T>, otherValue: T) {
    // ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使具有泛型的类接受相同泛型的不同数组?

来自分类Dev

具有新类型约束的泛型构造函数

来自分类Dev

具有多个参数的泛型类中的从属类型约束

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

如何将主构造函数添加到具有类型约束的泛型类?

来自分类Dev

具有泛型构造函数的泛型类?

来自分类Dev

具有类参数的泛型类型推断

来自分类Dev

具有不同类型泛型参数的方法的泛型类

来自分类Dev

如何使用已知类型作为参数创建具有泛型的泛型类?

来自分类Dev

我如何创建具有与类相同的泛型作为参数的构造函数

来自分类Dev

带有泛型类型的函数参数的泛型类方法不适用于Void

来自分类Dev

为什么在具有可比约束的泛型函数中丢失泛型类型信息?

来自分类Dev

为什么实现具有类型约束的泛型接口的泛型类需要重复这些约束?

来自分类Dev

具有泛型的Scala类型类

来自分类Dev

具有接口类类型的泛型

来自分类Dev

创建具有泛型类型的函数

来自分类Dev

如何强制Java接受相同类型的泛型参数

来自分类Dev

具有对其他类型参数的约束的类型参数的泛型推断

来自分类Dev

相同类型的Java泛型约束

来自分类Dev

泛型 - 函数返回类型与参数类型相同吗?

来自分类Dev

Delphi泛型:无法将类和构造函数约束的泛型类型转换为接口

来自分类Dev

Rust是否等效于具有相同泛型参数约束的Swift扩展方法?

来自分类Dev

在泛型类型的泛型类上访问类型参数

来自分类Dev

如何约束泛型类型以使其具有new()?

来自分类Dev

C#从具有约束的泛型推断类型

来自分类Dev

Typescript中具有泛型的子类型约束

来自分类Dev

具有类型约束的泛型的C#nameof

来自分类Dev

Swift 转换为具有约束的泛型类型

Related 相关文章

  1. 1

    如何使具有泛型的类接受相同泛型的不同数组?

  2. 2

    具有新类型约束的泛型构造函数

  3. 3

    具有多个参数的泛型类中的从属类型约束

  4. 4

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  5. 5

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  6. 6

    如何将主构造函数添加到具有类型约束的泛型类?

  7. 7

    具有泛型构造函数的泛型类?

  8. 8

    具有类参数的泛型类型推断

  9. 9

    具有不同类型泛型参数的方法的泛型类

  10. 10

    如何使用已知类型作为参数创建具有泛型的泛型类?

  11. 11

    我如何创建具有与类相同的泛型作为参数的构造函数

  12. 12

    带有泛型类型的函数参数的泛型类方法不适用于Void

  13. 13

    为什么在具有可比约束的泛型函数中丢失泛型类型信息?

  14. 14

    为什么实现具有类型约束的泛型接口的泛型类需要重复这些约束?

  15. 15

    具有泛型的Scala类型类

  16. 16

    具有接口类类型的泛型

  17. 17

    创建具有泛型类型的函数

  18. 18

    如何强制Java接受相同类型的泛型参数

  19. 19

    具有对其他类型参数的约束的类型参数的泛型推断

  20. 20

    相同类型的Java泛型约束

  21. 21

    泛型 - 函数返回类型与参数类型相同吗?

  22. 22

    Delphi泛型:无法将类和构造函数约束的泛型类型转换为接口

  23. 23

    Rust是否等效于具有相同泛型参数约束的Swift扩展方法?

  24. 24

    在泛型类型的泛型类上访问类型参数

  25. 25

    如何约束泛型类型以使其具有new()?

  26. 26

    C#从具有约束的泛型推断类型

  27. 27

    Typescript中具有泛型的子类型约束

  28. 28

    具有类型约束的泛型的C#nameof

  29. 29

    Swift 转换为具有约束的泛型类型

热门标签

归档