gpt4 book ai didi

子类型的 Swift 协议(protocol)一致性要求

转载 作者:可可西里 更新时间:2023-11-01 00:39:25 24 4
gpt4 key购买 nike

<分区>

(如果有人可以建议更好的标题,请这样做)

以下代码未编译并出现错误 Type 'ObserverClass' does not conform to protocol 'Observer',编译器通过声明 var object: ObservedObject 建议修复.

class ObservedObject {}
class ObservedObjectSubclass: ObservedObject {}

protocol Observer {
var object: ObservedObject { get }
}

class ObserverClass: Observer { // Type 'ObserverClass' does not conform to protocol 'Observer'

// suggested:
// var object: ObservedObject

var object: ObservedObjectSubclass = ObservedObjectSubclass()
}

我的看法 - ObservedObjectSubclass ObservedObject,所以 object 属性保证是根据协议(protocol)要求键入 ObservedObject

(同样如此,如果使用协议(protocol)一致性而不是子类化 - 下面)

protocol ObservedObjectProtocol {}
protocol Observer {
var object: ObservedObjectProtocol { get }
}

class ObservedObject: ObservedObjectProtocol {}

class ObserverClass: Observer { // same error
var object: ObservedObject = ObservedObject()
}

为什么编译器不高兴?是当前限制,还是编译器实际上是正确的并且存在一些逻辑约束?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com