Swift协议一致性

时间:2016-03-24 13:32:24

标签: swift class protocols conform

我想要一个符合协议的变量,但swift编译器告诉我协议没有确认。

protocol A {}
protocol B {
    var a : A { get }
}
class AA : A {}
// Type 'BB' does not conform to protocol 'B'
class BB : B { 
    let a = AA()
}

1 个答案:

答案 0 :(得分:3)

您不符合协议,因为a没有明确输入为A,而是推断为AA。说清楚。

protocol A {}
protocol B {
    var a : A { get }
}
class AA : A {}

class BB : B {
    let a: A = AA() // Explicitly typed here.
}

您在协议中使用了var而在实现中使用了let这一事实是一个红色的鲱鱼,因为var只是get,并且没有set }。