为什么在身份识别协议中必须引用self?

问题描述

在Apple的Identifiable实施中

所需的功能是

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就足够时,总是写出InnerTypeNameExample

var keyDecodingStrategy: JSONDecoder.KeyDecodingStrategy

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...