美文网首页
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泛型协议在函数中做参数和返回值

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