美文网首页
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