簡體   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