我想要一个符合协议的变量,但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()
}
答案 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
}。