猿问

为什么协议中的唯一属性要求不能被符合的属性所满足?

为什么协议中的唯一属性要求不能被符合的属性所满足?

为什么下面的代码会产生错误?

protocol ProtocolA {
    var someProperty: ProtocolB { get }}protocol ProtocolB {}class ConformsToB: ProtocolB {}class SomeClass: ProtocolA { 
    // Type 'SomeClass' does not conform to protocol 'ProtocolA'    var someProperty: ConformsToB

    init(someProperty: ConformsToB) {
        self.someProperty = someProperty    }}

这个类似问题的答案合乎道理。但是,在我的示例中,该属性是只获取的。为什么这不管用?这是SWIFT的一个缺点,还是有什么理由这样做是合理的?


慕沐林林
浏览 562回答 2
2回答

一只名叫tom的猫

如果你想要这种行为ProtocolA你应该associatedtype T: ProtocolB然后宣布var someProperty: T { get }
随时随地看视频慕课网APP
我要回答