繁体   English   中英

Swift:具有关联类型的协议

[英]Swift: Protocol With associatedType

我有一个关于具有关联类型的协议的问题,为什么我不能使协议成为我的实例的类型,例如: enter image description here

我知道我可以使用 Type Erasure 来解决这个问题,但是为什么具有关联类型的协议不喜欢成为实例的类型,如果你会说因为关联类型也被用作约束,那么我想在协议内部而不是在其扩展中实现属性,因为协议扩展有权控制谁可以访问其属性,为什么我们仍然有这个问题。

谢谢你。

有很多文章和答案( 比如这个)描述了原因,但总而言之,它需要associatedtype 变量不能有associatedtype 因此,除了Type Erasure方法(您不想要的)之外,您可以通过向类型添加some关键字来简单地使其不透明

var objectA: some ProtocolA = A()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM