簡體   English   中英

為什么Identifiable協議需要引用self?

[英]Why is it necessary to refer to self for the Identifiable protocol?

在蘋果的 Identifiable 實現中

所需的 function 是

associatedtype ID
var id: Self.ID { get }

為什么需要自我? 那和有什么區別

associatedtype ID
var id: ID { get }

我認為這只是 Apple 在編寫文檔時使用的約定。 他們用Self. 字首。 示例: 123 這是為了清楚什么是關聯類型,什么不是。 如果Identifiable.id的聲明改為如下所示:

var id: ID { get }

對於以前從未使用過 SwiftUI 的人來說,不清楚ID是完全獨立的頂級類型還是關聯類型。 但是,如果它表示Self.ID ,則很明顯ID是協議的關聯類型。

除此之外, Self. 前綴並不意味着什么特別的。 就像self. 引用實例成員時的前綴。 在大多數情況下它是可選的。 就像self. 前綴,你可能需要Self. 在某些情況下解決名稱沖突,但我現在想不起來。

Apple 似乎也有嵌套類型的約定 - 總是寫出OuterTypeName.InnerTypeName ,而InnerTypeName就足夠了。 示例

var keyDecodingStrategy: JSONDecoder.KeyDecodingStrategy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM