美文网首页
24.不透明类型

24.不透明类型

作者: LucXion | 来源:发表于2021-07-27 09:32 被阅读0次

    不透明类型解决的痛点:封装公共接口时可以灵活的选择对外界披露的信息,解决返回具体类型、协议限制

    protocol Name:Equatable {} //有合成实现的协议也不能直接作为返回值
    
    protocol Container {
        associatedtype Item // 有关联类型的协议不能作为返回类型。
        var count: Int { get }
        subscript(i: Int) -> Item { get }
    }
    extension Array: Container { }
    
    /*
    // 错误:没有足够多的信息来推断 C 的类型。
    func makeProtocolContainer<T, C: Container>(item: T) -> C {
        return [item]
    }
    */
    func makeOpaqueContainer<T>(item: T) -> some Container {
        return [item]
    }
    let opaqueContainer = makeOpaqueContainer(item: 12)
    let twelve = opaqueContainer[0]
    print(type(of: twelve))
    

    相关文章

      网友评论

          本文标题:24.不透明类型

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