美文网首页
swift泛型协议在函数中做参数和返回值

swift泛型协议在函数中做参数和返回值

作者: gerrywanggang | 来源:发表于2021-09-21 12:16 被阅读0次

泛型协议在函数中作为参数和返回值类型使用
泛型协议只能作为泛型的约束使用,不能直接作为函数参数或者返回值类型使用。
就是说,函数要使用泛型协议作为类型,只能转换一下: 在函数中添加一个泛型,让泛型协议作为这个泛型的约束,然后就可以使用了。如下:

protocol SupermanType {
    associatedtype NAMETYPE
}
struct Superman<T>: SupermanType {
    typealias NAMETYPE = T
}
func makeASuperMan<S: SupermanType>(type: S.Type) -> S {
    Superman<S>.init() as! S
}
let superman = makeASuperMan(type: Superman<Int>.self)

在makeASuperMan函数中, S为泛型, SupermanType为泛型协议。SupermanType还只能作为泛型约束,不能作为参数类型。

相关文章

  • swift泛型协议在函数中做参数和返回值

    泛型协议在函数中作为参数和返回值类型使用泛型协议只能作为泛型的约束使用,不能直接作为函数参数或者返回值类型使用。就...

  • 2021-12-01

    swift5基本语法-泛型函数和泛型类型 Swift中泛型可以将类型参数化,提高代码复用率,减少代码量。 一、泛型...

  • Java高级语言

    泛型 为什么需要泛型 重构相同函数体且不同类型返回值和参数时,可以使用泛型。而不需要多个重构函数比如: 泛型中的类...

  • swift泛型整理

    swift泛型知识主要包括:泛型函数、泛型协议、泛型类型、泛型约束。 一、泛型函数。 如:一个交换两个变量值的函数...

  • 问题:泛型类,泛型结构体,泛型协议的功能特性都包含在Swift中

    Swift 包含泛型类,泛型结构体特性。泛型可以在类、结构体、枚举、全局函数或者方法中使用。 泛型协议是通过typ...

  • Swift 运用协议泛型封装网络层

    Swift 运用协议泛型封装网络层 Swift 运用协议泛型封装网络层

  • 【Swift】泛型常见使用

    1、Swift泛型4种 泛型函数泛型类型泛型协议泛型约束 2、泛型约束3种 继承约束:泛型类型 必须 是某个类的子...

  • Dart入门06 -- 泛型,extension,库的使用

    泛型 泛型:将类型参数化,提高代码的复用,用<>表示; getInfo函数的 返回值与参数 的类型都是固定 int...

  • fun (函数)

    关键字 中缀符号 参数 默认参数 命名参数 不带返回值的参数 单表达式函数 变长参数 函数范围局部函数成员函数泛型...

  • ts-Generics 泛型

    开始 T 表示一个类型变量,这个函数的参数可以是任何类型,但是返回值类型必须和参数类型一致。 泛型变量 泛型类型 ...

网友评论

      本文标题:swift泛型协议在函数中做参数和返回值

      本文链接:https://www.haomeiwen.com/subject/ptypgltx.html