Swift 采用静态读写协议的结构 属性 不符合?

Swift struct adopting protocol with static read-write property doesn't conform?

为什么不能在 Swift 1.2 中编译?

protocol Proto {
    static var name : String {get set}
}
struct Struct : Proto {
    static var name : String = "name"
}

(在 Swift 1.1 中,只需将协议声明中的 static 替换为 class。同样的问题。)

编译器抱怨我不符合协议。但为什么我不是?很容易证明 Struct 中的 static 属性 name 可读可写的,所以我已经满足了协议的精神,当然。

我有一些额外的观察:

但我并没有更深入地了解编译器不喜欢我所拥有的东西。为什么静态存储 属性 不满足协议要求?

在这一点上,我被 Nate Cook 的例子说服了,这只不过是 Swift 编译器中的一个错误。正如他指出的那样,仅在静态变量上添加一个空的 didSet 观察器就可以编译代码。尽管这没有 功能性 差异,但它可能会有所作为,这一事实已经 "bug" 写满了它。

母舰固定在 6.3 (6D543q):

protocol Proto {
    static var name : String {get set}
}

struct Struct : Proto {
    static var name : String = "name"
}

Struct.name = "Frodo"

println(Struct.name)

现在有效:

-> "Frodo"

(在游乐场测试) 它确实看起来像 static 被视为 let / const 变量,但你的案例现在在 6.3 Beta 3 中工作。我很高兴 lldb 符号没有被破坏。