为什么在 Swift 协议中总是在类型 属性 要求前加上 static 关键字?

Why always prefix type property requirement with the static keyword in Swift protocol?

The Swift Programming Language 一书的第 369 页上,它说 “始终使用静态前缀类型 属性 要求在协议中定义它们时使用关键字。”

示例代码:

protocol AnotherProtocol {
    static var someTypeProperty: Int { get set }
}

这样做的原因或好处是什么?

因为没有 static 关键字,您最终会声明一个实例 属性 而不是类型 属性。紧跟在您引用的段落之后的示例显示了这一点:

Here’s an example of a protocol with a single instance property requirement:

protocol FullyNamed {
    var fullName: String { get }
}